看腾讯测试老鸟如何做接口自动化测试
目录
一、自动化分类
二、接口自动化与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自动化测试框架全栈测试开发实战项目入门到精通,涨薪必备教程!!!
看腾讯测试老鸟如何做接口自动化测试相关推荐
- python runner功能_Python 如何使用 HttpRunner 做接口自动化测试
点击上方"软测小生",选择"加为星标" 第一时间关注软件测试原创干货! 1. 前言 原始测试金子塔包含 3 层,分别是:UI 自动化测试.接口服务测试.单元测试 ...
- 转为yaml python_python 如何使用HttpRunner做接口自动化测试
作者:星安果 来源:AirPython 1. 前言 原始测试金子塔包含 3 层,分别是:UI 自动化测试.接口服务测试.单元测试 其中, 单元测试是对软件的最小可测试单元进行检查和验证,也是产生效率最 ...
- 测试面试集-Python接口自动化测试
VOL 159 18 2020-09 今天距2021年104天 这是ITester软件测试小栈第159次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 ...
- python做自动化控制postman_使用postman+newman+python做接口自动化测试
postman是一款API调试工具,可用于测试接口,相类似的工具还有jmeter.soupUI.通过postman+newman+python可以批量运行调试接口,达到自动化测试的效果. 1.Post ...
- form表单用js提前执行函数若不成功则不提交_如何用Jmeter做接口自动化测试?跟着操作一次就明白了...
Jmeter是Apache公司组织开发的一款基于Java压力测试工具,开源且支持多个操作系统,可以对测试静态和动态资源进行大并发负载模拟,或对服务器网络进行高强度并发测试,业界多将该工具应用于性能测试 ...
- 录制完脚本怎么做接口自动化测试_快速构建轻量级接口自动化框架
随着移动互联网和微服务的迅速发展,大部分企业都采用接口的方式实现客户端和服务端的交互,传统的PC端也逐渐趋向于前后端分离架构.为了应对此种架构下的业务迭代,很多QA团队开始推广接口自动化,甚至是自研接 ...
- 测试进阶必备,这5款http接口自动化测试工具简直不要太香~
现在市场上能做接口自动化测试的工具有很多,一搜一大把,让人眼花缭乱.我们去选择对应实现方式时,不管是框架体系还是成熟稳定的工具,核心目的都是期望引入的技术能在最低投入的情况下达到最优效果. 那么我们选 ...
- 学习之浅谈python如何做接口自动化
目录 前言 一.接口 二.API自动化测试(接口测试): 三.requests框架 四.自动化测试框架------->自动化测试核心技能 1. 1 接口测试类型 1.2 如何开展接口测试 1.3 ...
- 接口自动化测试,一看就会
引言 与UI相比,接口一旦研发完成,通常变更或重构的频率和幅度相对较小.因此做接口自动化的性价比更高,通常运用于迭代版本上线前的回归测试中. 手工做接口测试,测试数据和参数都可以由测试人员手动填写和更 ...
- 什么是接口自动化?为什么要做?和怎么做接口自动化?
目录 1.服务端接口测试介绍 什么是服务端? 2.什么是接口? 3.什么是接口测试? 4.为什么要做接口测试? 5.如何做接口测试? 6.接口测试自动化介绍 什么是接口测试自动化? 7.为什么要做接口 ...
最新文章
- 2013-7-12学习笔记
- 身患安全杂症,企业如何“下药”?
- CSS+DIV-公司网站
- 数据中心、智慧机房全套解决方案
- oracle日志分析产品,鼎甲技术应用:Oracle日志分析 之事务级精准恢复
- burst tx 功能 开启_Serverspeeder 锐速config配置文件详解
- 走近Quick Audience,了解消费者运营产品的发展和演变
- [SHOI2014] 概率充电器
- android悬浮窗代码布局,三行代码实现Android应用内悬浮窗,无需一切权限,适配所有ROM和厂商...
- MainActivity向子Fragment传值
- CF280C Game on tree(期望dp)
- Blog Contents
- msu文件无法运行_如何打开msu文件
- SpringBoot2.X 单元测试(Junit4.X) 基本配置
- 【MapReuce】读取本地美国疫情数据存储结果到MySQL
- Ubuntu20安装搜狗拼音输入法
- html打印去掉页码和日期,PPT打印讲义时如何去掉日期页码?
- Ubuntu 安装微信,网页版无法登陆
- 计算机英语读法语音,英语语音朗读技巧
- 即兴小探华为开源行业领先大数据虚拟化引擎openLooKeng