如何用ai辅助提效接口自动化的

13 阅读3分钟

目录

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)