python实现接口自动化测试
1. 接口自动化流程需求分析请求:url、方法、数据响应:响应数据、状态码挑选需求做自动化测试时间、人员、接口复杂度设计测试用例搭建自动化测试环境如python、pycharm设计测试项目的架构报告、参数化、用例执行框架编写代码执行测试用例unittest、pytest生成测试报告2.接口清单整理收藏文章请求1)请求url:2)请求方法:POST/GET3)请求参数:Headers = {. }4
·
1. 接口自动化流程
- 需求分析
请求:url、方法、数据
响应:响应数据、状态码
- 挑选需求做自动化测试
时间、人员、接口复杂度
-
设计测试用例
-
搭建自动化测试环境
如python、pycharm
- 设计测试项目的架构
报告、参数化、用例执行框架
- 编写代码
- 执行测试用例
unittest、pytest
- 生成测试报告
2.接口清单整理
- 收藏文章
- 请求
1)请求url:
2)请求方法:POST/GET
3)请求参数:Headers = {. }
4)请求报文:Body- 响应
1)响应状态码:
2)响应数据:
3.用例设计
- 1.单接口的用例设计
模板:
id、模块、接口名称、请求url、用例名称、请求方法、请求参数类型、请求参数、预期结果、实际结果、备注
注意:单接口用例设计的颗粒度较小(以测试数据为颗粒度)
- 2.业务功能的用例设计
多接口模板:
d、模块、接口名称、请求url、用例名称、请求方法、请求参数类型、请求参数、预期结果、实际结果、备注
注意
4. 项目搭建
自动化测试目录结构
- 接口对象层api
1)登录 login.py
2)获取登录列表
…
- 用例业务实现层 case
1)tese_login.py
…
- 用例报告report
报告.html
- 工具层 tools
- 数据层 data
1)login.json
…
- 运行入口 run_sutie.py
4.1接口对象层
1.login.py
# 实现登录接口对象封装
# 导包 requests
import requests
# 新建类 登录接口对象
class ApiLogin(object){
# 新建方法 登录方法
def api_login_post(self,url,mobile,code):
# headers定义
headers = {"Content-Type":"application/json"}
# data定义
data = {"mobile": , "code":}
# 调用post并返回响应对象
return requests.post(url,headers=headers,json=data)
}
url、mobile、code需要从data数据文件读取,做参数化使用,这里使用动态传参
2.test_login.py
// 1.导包 unittest 、ApiLogin
import unittest
form ApiLogin import
// 2. 新建测试类 继承unittest.TestCase
class TestLogin(unittest.TestCase):
def test_login(self):
// 暂时保存数据
url =
mobile =
code =
// 调用登录方法
obj = ApiLogin().api_post_login(url,mobile,code)
// 测试使用
print(‘查看测试结果’,obj.json())
// 断言 响应信息 、响应状态码
self.assertEquals("OK",obj.json()['message'])
// 响应状态码
self.assertEquals(201,obj.status_code)
// 3. 新建测试方法 test_login()
1)参数化数据准备 url,mobile,code
2)实例化 ApiLogin()类并调用登录方法
3)断言 响应信息 、响应状态码
解决数据存储问题
在data
文件夹中创建一个login.json
的文件
步骤:
- 编写数据存储文件login.json
data文件夹
- 编写读取json工具
tools文件夹
# 导包
# 新建读取工具类
1.使用初始化方法,获取要读取的文件名称
1)self.filepath = '.../data/'+filename
2. 读取文件方法
1)打开json文件获取文件流
2)调用load方法加载文件流
3)返回结果
- 使用参数化动态获取参数数据
parameterized参数化组件
- pip install parameterized
- @parameterized.expand(参数)
1). 单个参数:列表格式 [值1,值2]
2). 多个参数:列表嵌套元组[(参数1),(参数2)]
// 导包
import unittest
from parameterized import parameterized
// 新建测试类
class TestPara(unittest.TestCase):
// 新建测试方法
更多推荐
已为社区贡献1条内容
所有评论(0)