一 接口自动化框架
一 框架结构
二 结构说明
- API 用于封装被测系统的接口(用request模块封装的请求方法)
- TestCase 将一个或多个接口封装成测试用例,并使用UnitTest管理测试用例 TestCase可以
- 为了方便维护测试数据,可以把测试脚本和测试数据分离开
- 通过UnitTest断言接口返回的数据,并生成测试报告
三 接口自动化
简单示例
import re, jsonpath, pytest, requests class TestApi: def test_01_api(self): res = requests.get(url="http://127.0.0.1:8000/api") print(f"res={res.text}") # 正则表达式提取 result = re.search('"user":"(.*?)"', res.text) print(f"result={result}") def test_02_api(self): res = requests.get(url="http://127.0.0.1:8000/api") # 通过jsonpath取值 value = jsonpath.jsonpath(res.json(), "$.data[0].goods[0].price") print(f"value={value}") if __name__ == '__main__': pytest.main(['-s']) #-s 显示测试执行的输出信息
接口自动化问题:
1 统一请求问题
2 断言
3 接口关联:用到re提取器和jsonpath提取器
4 动态参数
5 csv数据驱动
6 日志监控
7 异常处理
8 基础路径设置
二 正则表达式提取器
同postman,jmeter的正则表达式提取器和json提取器
特点:可以处理所有类型的返回数据。
(.+?) | 匹配任意一个字符1-N次 |
(.*?) | 匹配任意一个字符0-N次 |
三 jsonpath提取器
特点:jsonpath只能提取json格式的数据。
json是一种轻量级的数据格式。由两种数据组成: - 对象:由大括号括起来的用逗号分隔的成员,成员由键值对组成。如{"name":"jj","age":"16"} - 数组:由中括号括起来的一组值。如["A","B"]
语法格式:
$ | 根节点 |
.或[] |
获取子节点的对象。如$.name,$.["name"] 区别:[]可以同时取多个节点,如$["name","age"] 数组可以通过[]处理 $.data[0].goods[0].price #0表示取数组第一个值 $.data[1:] #下标从1开始到最后[切片取值] ⚠️ 两种情况用[]: 1 数组取值 2 取子节点 |
.. | 相对路径取值,递归取值。适用值唯一。如$..name |
* |
通配符。如 $.*:匹配到根节点下所有节点的值 $..*:递归匹配到根节点下所有的对象 |
标签:提取,name,res,接口,正则,Jsonpath,节点,jsonpath From: https://www.cnblogs.com/daminghuahua/p/17073567.html