目录
1.ai辅助写接口自动化脚本
2.ai辅助jsonpath提取
3.ai辅助接口自动化断言
1.ai辅助写接口自动化脚本
1.上传接口文档
2.问Qwen/windsurf:
一个简单的接口文档:
v1:基于接口文档内容,帮我生成基于python+requests+pytest技术的接口自动化测试代码
v2:基于接口文档内容,帮我生成基于python+requests+pytest技术的接口自动化测试代码,结合DDT数据驱动进行代码的设计 安装了一个DDT的库--不太对!! 所以需要交代的更清楚,前提是你知道要的是什么,有一个明确的目标,这样你才能指导ai去实现
v3:基于接口文档内容,帮我生成基于python+requests+pytest技术的接口自动化测试代码,结合pytest参数化机制实现数据驱动进行代码的设计 定义一个class,以及把测试用例的代码放在一个函数里面,不需要写main入口函数
一个系统的接口文档:
v1:这是商城系统的接口文档信息,生成首页接口自动化测试用例的代码,参考以下代码: 把现有代码发给他,作为best practice
可以让他根据现在自己写的脚本来生成测试用例 给到conftest里定义的函数 接下来就不需要让他每次给我的用例中都出现conftest了
v2:不用生成BASE_URL,COMMON_PARAMS,他们已经编写在conftest.yaml中。参考以下代码格式:
def test_get_homepage_data(self, send_request):
"""测试获取首页数据"""
# 只需要传入接口路径 'index/index',公共参数和域名已经自动带上了
res = send_request("index/index", method="GET")
assert res.get("code") == 0
assert "banner_list" in res.get("data", {})
print("首页数据获取成功!")
现状:有些公司有自己的接口自动化平台,不需要自己手动去写接口自动化。然而很多接口自动化平台都是基于http的,可能不是http的接口就还是需要写接口自动化,比如websocket
基于websocket的接口文档,帮我生成基于python+requests+pytest技术的接口自动化测试代码
2.ai辅助jsonpath提取
写注释,ai会帮生成:#提取上面地址为"广州市天河区"对应的订单号
如下:
import json
json_data = '''
{
"data": {
"data": [
{"order_no": "20210911001", "address": "上海市黄浦区999街道1号"},
{"order_no": "20210911002", "address": "广州市天河区"},
{"order_no": "20210911003", "address": "长沙市天心区888街道1号"}
]
}
}
json_data = json.loads(json_data)
#提取上面地址为"广州市天河区"对应的订单号
jsonpath_expression = parse("$.data.data[?(@.address == '广州市天河区')].order_no")
matches = jsonpath_expression.find(json_data)
for match in matches:
print(match.value)
3.接口自动化断言
响应内容有很多种格式:
json:
已知✅️:用字典,或者jsonpath
xml:
注释:提示ai去写 # 对上面xml的接口返回值进行断言,判断city是否为上海
import xmltodict
def test_xml_assert():
# 将xml字符串转换为字典
xml_dict = xmltodict.parse(xml_str)
# 获取字典中的值
city = xml_dict['root']['result']['city']
jsonp
【使用场景:跨域(前后端分离)】
json_str = 'callback({"result":"success"})'
callback是javascript
怎么把jsonp数据变成json数据
json_str = 'callback({"result":"success"})'
写上注释: 提示ai去写# 把上面的jsonp格式转换为json格式
json_data = json.loads(json_str[json_str.find('(')+1:json_str.rfind(')')])
正则表达式
xml_str = '''<?xml version="1.0" encoding="utf-8" ?>
<root>
<resultcode>200</resultcode>
<reason>Return Successd!</reason>
<result>
<province>浙江</province>
<city>杭州1</city>
<areacode>0571</areacode>
<zip>310000</zip>
<company>中国移动</company>
<card></card>
</result>
</root>'''
写上注释: 提示ai去写 # 通过正则表达式提取 杭州1 杭州1 字段内容
import re
city = re.findall(r'<city>(.*?)</city>', xml_str)[0]
print(city)