接口自动化框架: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调用时命名一致

 
5. debugtalk: 用于定义自定义方法

 

 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. 其它梳理

 

 

posted @   Ihtang  阅读(241)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示