接口自动化框架:httprunner+python+jenkins+email+dingding
一、组成
httprunner+python+jenkins+email+钉钉
二、框架目录结构
- api: 定义接口request。
- data: 编写具体的用例,用例编号、等级、入参、预期结果等。
- log: 运行日志。
- middle: 公共的方法。
- reports: 框架运行自动生成的报告。
- testcases: 测试步骤,调用api下的yml文件,形成测试步骤。
- testsuites: 测试模块,调用testcases下的yml文件,形成测试单元。
- .env:环境变量。
- debugtalk.py:自定义方法,用来实现用例读取、自定义断言等。
三、各模块详解
1. api: 可以根据模块划分,建立文件夹,在文件夹下编写该模块的yml、json或py文件,结构如图。
示例代码如下:
name: login api
variables:
path: /remotecontroller/user/login
request:
headers:
Content-Type: "application/json"
method: POST
url: ${ENV(URL)}$path
json:
password: $password
type: message
username: $username
validate:
- eq: ["status_code", 200]
- eq: ["content.code", $login_code]
- eq: ["content.msg", $login_msg]
extract:
- token: content.data.token
2. testcases: 可以是单接口的case,也可以是业务场景的case
config:
name: user api
teststeps:
-
name: login $loginTitle
api: api/user/login.yml
extract:
- token: content.data.token
- status_code: status_code
-
name: userInfo $userInfoTitle
api: api/user/userInfo.yml
extract:
- res: content
3. testsuites:选择执行的测试单元,参数化通过parameter关键字来实现, 注意接收的变量名要与excel文件中列名一致
config:
name: "test cases"
testcases:
-
name: userInfo
testcase: testcases/user.yml
variables:
loginLevel: [1]
userInfoLevel: []
parameters:
level-num-loginTitle-username-password-login_code-login_msg: ${getSamples(login,num=1)}
level-num-userInfoTitle-menchantId-userInfo_code-userInfo_msg: ${getSamples(userInfo,$userInfoLevel)}
4. data: 用来编写具体的测试用例,每个sheet对应一个接口的具体cases,在testsuites中调用,sheet名字要与testsuites中parameters调用时命名一致



6. 自定义断言
在debugtakl.py中定义
在api或teststep中,通过validate关键字调用,${funcName(value1, value2)}
7.middle: 定义公共组件,如数据库操作、excel读取、日志、公共方法, 在debugtalk函数中调用,如实现数据库自定义断言
四、框架的优劣分析
优点:1. yml编写接口定义,编程难度低;
2. jenkins集成,定时一键构建,可视化,操作简单;
3. 支持excel中编写测试用例,实现了数据分离;
4. 支持按level或者casenum执行指定等级或编号的测试用例;
4. 支持自定义断言,如:数据库断言,sql支持传参
5. 支持环境切换,生产、预发布、测试等
6. 支持单接口和多节课测试,多接口可直接使用单接口指定编号的用例,不用重新编写用例
7. 有日志模块
8. 测试结果可发送邮件+钉钉消息通知
待优化:
1. 部分测试步骤,失败重试待实现,初步想法通过skipif来实现
2. jenkins配置参数
3. 其它梳理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通