目录

一、自动化分类

二、接口自动化与Web自动化的区别

三、怎么做接口自动化

1、流程

2、搭建接口自动化测试环境

3、准备数据——准备接口用例数据

4、编写自动化测试脚本

5、工程管理维护与优化


一、自动化分类

(1)接口自动化

python/java+requests+unittest框架来实现 python/java+RF(RobotFramework)框架来实现——对于编程要求不高

(2)Web UI功能自动化

python/java+selenium+unittest+ddt+PO框架来实现 python/java+RFS(RobotFrameWork+Selenium)框架来实现——对于编程要求不高

(3)App自动化

python/java+appnium+unittes框架来实现 python/java+RF(RobotFramework)框架来实现——对于编程要求不高

二、接口自动化与Web自动化的区别

(1)接口自动化是没有界面的,不需要对界面元素定位操作,不需要考虑界面延迟的问题,执行效率更高 (2)接口自动化用的是requests测试库,Web自动化用的selenium测试库 (3)接口自动化的覆盖率可以达到100%(绝大部分的接口都可以实现自动化) Web自动化的覆盖率能达到80-90%算OK(可能会有某些功能是没办法实现自动化的)

三、怎么做接口自动化

1、流程

A. 确定业务范围,哪些业务功能的接口可以做自动化——接口自动化的覆盖率可以达到 100%

B. 时间进度安排,人员分配

C. 确定自动化测试框架

D. 准备数据——准备接口用例数据

E. 编写接口自动化脚本

2、搭建接口自动化测试环境

(1)、安装python3.x——配置python的环境变量

(2)、安装PyCharm——python开发工具

(3)、安装测试库 Requests库—— 提供了丰富的用来发请求,对请求进行处理的API函数 xlrd,xlwt库—— 提供了对Excel文件进行操作的API函数 Pymysql库—— 提供了对Mysql数据库进行操作的API函数 paramsunittest库—— 实现参数化的库 Json库—— 提供了对Json格式的数据进行操作的API函数(python自带的基础库) Re库—— 可以使用这个库中的API函数对HMTL数据进行操作

3、准备数据——准备接口用例数据

我们把接口用例数据放入在Excel表格中,因为每一个接口都包含:请求地址,请求方式,请求参数,以及响应数据;所以在Excel表格中按照以下方式来组织我们的接口用例数据,包含以下几个内容: 用例名称,请求地址,请求方式,请求头,请求参数,预期结果(断言) 然后我们会封装一个函数去读取Excel数据,以参数的形式传递到脚本中,具体操作步骤如下:

4、编写自动化测试脚本


1、步骤:A、导包
import requestsB、组织请求参数
url = ‘http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’
par = {   ‘email’: ‘Jason’,   ‘user_pwd’: ‘TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==‘,    ‘auto_login’: 0,   ‘ajax’: 1
}C、发送请求
res = requests.post(url, data=par)
res = requests.get(url,params=par)D、提取响应对象中的数据,并做断言
1、提取响应*body*内容**res.text     —— 如果返回的是html格式的数据,使用res.text提取`res.json()   —— 如果后台返回的是json格式的数据,则使用这个API函数来提取`
2、提取响应头***res.headers
3、提取状态码,响应信息res.status_coderes.reason
4、提取cookie值res.cookies()
2、传递请求头
header = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0’,‘Accept’: ‘application/xml’,
}
res = requests.post(url,data=par,headers=header)
3、传递cookie,token值通过请求头来传递 —— 直接从浏览器上查看cookie值,并传递到后台。
header = {‘Cookie’: ‘PHPSESSID=3724b412550a557825da5528dd6198c6’
}
res = requests.post(url,data=par,***headers=heade***r,allow_redirects=False) 发请求的时候通过cookies这个参数来传递
import requests
#1. 登录,获取cookie值
def getCookie():url = ‘http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’par = {‘email’: ‘Jason’,‘user_pwd’: ‘TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==‘,‘auto_login’: 0,‘ajax’: 1}res = requests.post(url, data=par)return res.cookies
#2. 调用充值接口
#2.1 获取cookie值
cookie = getCookie()
#2.2 发充值请求
url = ‘http://localhost/fw/member.php?ctl=uc_money&act=incharge_done’
par = {‘check_ol_bl_pay’:’on’,‘money’:1000,‘bank_id’:0,‘memo’:234567890,‘payment’:5,
}
#发充值请求
res1 = requests.post(url,data=par,cookies=cookie,allow_redirects=False)            # 自动重定向的,可以取消自动重定向
print(res1.status_code)
print(res1.reason)
print(res1.headers)先创建一个session对象,所有请求都使用这个session对象来发送
import requests
#1. 发登录请求
url = ‘http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’
par = {‘email’: ‘Jason’,‘user_pwd’: ‘TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==‘,‘auto_login’: 0,‘ajax’: 1
}
#创建一个seesion对象,后期使用这个session对象来发请求
ses = requests.session()
#发登录请求,返回的cookie值会自动化保存到session对象中
response1 = ses.post(url,data=par)
#2. 发充值请求
url = ‘http://localhost/fw/member.php?ctl=uc_money&act=incharge_done’
par = {‘check_ol_bl_pay’:’on’,‘money’:1000,‘bank_id’:0,‘memo’:234567890,‘payment’:5,
}
response2 = ses.post(url,data=par,allow_redirects=False)
print(response2.headers)

5、工程管理维护与优化

(1)、数据驱动——实现接口用例数据与脚本的分离 我们把接口用例数据放入在Excel表格中,因为每一个接口都包含:请求地址,请求方式,请求参数,以及响应数据;所以在Excel表格中按照以下方式来组织我们的接口用例数据,包含以下几个内容: 用例名称,请求地址,请求方式,请求头,请求参数,预期结果(断言) 然后我们会封装一个函数去读取Excel数据,以参数的形式传递到脚本中,具体操作步骤如下:

    安装xlrd库pip install xlrd调用xlrd库中的API函数来实现对Excel表格数据的读取
#封装一个读取Excel表格数据的函数
#对Excel表格数据的读取需要用到一个库——xlrd库
import xlrd
def get_data(filename,sheetname):#1. 打开Excel文件workbook = xlrd.open_workbook(filename)    #2. 打开Excel文件中的某张表sheet = workbook.sheet_by_name(sheetname)   #3. 读取表中的内容list = []for I in range(1,sheet.nrows):data = sheet.row_values(i)list.append(data)  return list
if __name__==‘__main__’:result = get_data(‘D:\\JMeter\\1947_Project\\cxy-project02\\data\\接口用例数据.xls’,’登录’)print(result)问题解决1
工程问题:1、没有安装xlrd2、没有把xlrd导入工程

(2)、unittest框架 作用:用来管理用例,加载用例,执行用例 原理:有几个核心组件 1、测试固件 setUp() 每条用例执行之前,首先会执行这个setUp()方法,在setUp()方法中完成准备初始化工作 比如:连接数据库,后期在将Web UI功能自动化的时候,可以在这里去打开浏览器,配置 tearDown() 每条用例执行完成之后,回收一些资源,比如:关闭数据库,关闭浏览器 2、测试用例 每一条用例需要实现一个用例方法,每个用例方法都必须要以test开头 3、测试套件 执行用例的时候,需要创建测试套件,把用例加入测试套件。 4、加载器 用来加载用例的,把测试用例加入测试套件中 5、执行器 用来执行测试套件中的用例的 如何使用unittest框架来编写用例

#1. 导包
import time
import unittest
import requests
from common.excelUtils import get_data
import paramunittest
#读取excel表格中的数据
list = get_data(‘D:\\JMeter\\1947_Project\\cxy-project02\\data\\接口用例数据.xls’,’登录’)
#2. 定义一个类,去继承unittest.TestCase
@paramunittest.parametrized(*list)                  # 引用list中的所有数据
class FwLogin(unittest.TestCase):def setParameters(self,case_name,url,method,headers,params,assert_info):‘’’有多少条用例,这个函数就会执行多少次,每执行一条用例之前先会执行这个函数,把数据提取出来。:param case_name::param url::param method::param headers::param params::param assert_info::return:‘’’self.case_name = str(case_name)self.url = str(url)self.method = str(method)self.headers = str(headers)self.params = str(params)self.assert_info = str(assert_info)#1. 实现一个用例方法def test_login_case(self):time.sleep(5)#1. 组织参数self.headers= eval(self.headers)                # 将字符串转化为字典self.params = eval(self.params)#2. 发请求if self.method == ‘POST’:response = requests.post(self.url,data=self.params,headers=self.headers)else:response = requests.get(self.url,params=self.params,headers=self.headers)#3. 检查,断言self.check_result(response)def check_result(self,response):‘’’断言  检查结果的:param response::return:‘’’self.assert_info = eval(self.assert_info)           #预期结果try:self.assertEqual(response.status_code,200,’响应状态码错误’)self.assertEqual(response.reason,’OK’,’响应的响应码错误’)self.assertDictEqual(response.json(),self.assert_info,’响应的正文内容不一致!’)print(‘%s测试用例通过!’ %self.case_name)except AssertionError as e:print(‘%s测试用例不通过!%s’ %(self.case_name,e))if __name__ == ‘__main__’:unittest.main()

B站最牛的Python自动化测试框架全栈测试开发实战项目入门到精通,涨薪必备教程!!!

看腾讯测试老鸟如何做接口自动化测试相关推荐

  1. python runner功能_Python 如何使用 HttpRunner 做接口自动化测试

    点击上方"软测小生",选择"加为星标" 第一时间关注软件测试原创干货! 1. 前言 原始测试金子塔包含 3 层,分别是:UI 自动化测试.接口服务测试.单元测试 ...

  2. 转为yaml python_python 如何使用HttpRunner做接口自动化测试

    作者:星安果 来源:AirPython 1. 前言 原始测试金子塔包含 3 层,分别是:UI 自动化测试.接口服务测试.单元测试 其中, 单元测试是对软件的最小可测试单元进行检查和验证,也是产生效率最 ...

  3. 测试面试集-Python接口自动化测试

    VOL 159 18 2020-09 今天距2021年104天 这是ITester软件测试小栈第159次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  4. python做自动化控制postman_使用postman+newman+python做接口自动化测试

    postman是一款API调试工具,可用于测试接口,相类似的工具还有jmeter.soupUI.通过postman+newman+python可以批量运行调试接口,达到自动化测试的效果. 1.Post ...

  5. form表单用js提前执行函数若不成功则不提交_如何用Jmeter做接口自动化测试?跟着操作一次就明白了...

    Jmeter是Apache公司组织开发的一款基于Java压力测试工具,开源且支持多个操作系统,可以对测试静态和动态资源进行大并发负载模拟,或对服务器网络进行高强度并发测试,业界多将该工具应用于性能测试 ...

  6. 录制完脚本怎么做接口自动化测试_快速构建轻量级接口自动化框架

    随着移动互联网和微服务的迅速发展,大部分企业都采用接口的方式实现客户端和服务端的交互,传统的PC端也逐渐趋向于前后端分离架构.为了应对此种架构下的业务迭代,很多QA团队开始推广接口自动化,甚至是自研接 ...

  7. 测试进阶必备,这5款http接口自动化测试工具简直不要太香~

    现在市场上能做接口自动化测试的工具有很多,一搜一大把,让人眼花缭乱.我们去选择对应实现方式时,不管是框架体系还是成熟稳定的工具,核心目的都是期望引入的技术能在最低投入的情况下达到最优效果. 那么我们选 ...

  8. 学习之浅谈python如何做接口自动化

    目录 前言 一.接口 二.API自动化测试(接口测试): 三.requests框架 四.自动化测试框架------->自动化测试核心技能 1. 1 接口测试类型 1.2 如何开展接口测试 1.3 ...

  9. 接口自动化测试,一看就会

    引言 与UI相比,接口一旦研发完成,通常变更或重构的频率和幅度相对较小.因此做接口自动化的性价比更高,通常运用于迭代版本上线前的回归测试中. 手工做接口测试,测试数据和参数都可以由测试人员手动填写和更 ...

  10. 什么是接口自动化?为什么要做?和怎么做接口自动化?

    目录 1.服务端接口测试介绍 什么是服务端? 2.什么是接口? 3.什么是接口测试? 4.为什么要做接口测试? 5.如何做接口测试? 6.接口测试自动化介绍 什么是接口测试自动化? 7.为什么要做接口 ...

最新文章

  1. 2013-7-12学习笔记
  2. 身患安全杂症,企业如何“下药”?
  3. CSS+DIV-公司网站
  4. 数据中心、智慧机房全套解决方案
  5. oracle日志分析产品,鼎甲技术应用:Oracle日志分析 之事务级精准恢复
  6. burst tx 功能 开启_Serverspeeder 锐速config配置文件详解
  7. 走近Quick Audience,了解消费者运营产品的发展和演变
  8. [SHOI2014] 概率充电器
  9. android悬浮窗代码布局,三行代码实现Android应用内悬浮窗,无需一切权限,适配所有ROM和厂商...
  10. MainActivity向子Fragment传值
  11. CF280C Game on tree(期望dp)
  12. Blog Contents
  13. msu文件无法运行_如何打开msu文件
  14. SpringBoot2.X 单元测试(Junit4.X) 基本配置
  15. 【MapReuce】读取本地美国疫情数据存储结果到MySQL
  16. Ubuntu20安装搜狗拼音输入法
  17. html打印去掉页码和日期,PPT打印讲义时如何去掉日期页码?
  18. Ubuntu 安装微信,网页版无法登陆
  19. 计算机英语读法语音,英语语音朗读技巧
  20. 即兴小探华为开源行业领先大数据虚拟化引擎openLooKeng

热门文章

  1. MAC M2 安装 zookeeper
  2. linux学习随笔第二天
  3. iOS添加测试设备报错ineligible for 14 days
  4. sr550服务器系统,sr550服务器管理口地址
  5. PTA【L3】喊山 (30 分)
  6. 2023 最新闲鱼自动收货源码
  7. SpringBoot在Idea中使用Maven管理依赖包的学习
  8. 技术官方文档中的代码是用什么展示的?代码高亮插件总结
  9. 双面渲染美翻了!零基础也能学会,源码直接带走…
  10. 在控制台中提示警告信息libpng warning: iCCP: known incorrect sRGB profile