HttpRunner 2.x接口自动化实战

1.环境准备

测试环境: python3.8 ,httprunner版本为2.5.7
pip install httprunner==2.5.7

检查安装结果:

httprunner -V

创建项目

使用 httprunner命令创建一个项目。
httprunner --startproject HttpRunnerDemo

安装过程中出现下方的报错,可以执行这个命令解决。执行完,再重新安装HttpRunner。

python -m pip install markupsafe==2.0.1

创建之后得到的目录是这样的:

├─api├─reports├─testcases└─testsuites

文件作用

下面来看下生成的几个文件都是做什么的:

api: 定义单个接口的用例
testcases:一个测试用例,多个接口组合调用
testsuites:一个测试套,多个测试用例组合调用
debugtalk.py:每个项目有且仅有一个,项目的根路径标识,存放自定义的 Python 方法,测试用例中的自定义方法都在此定义。
env:环境变量文件,在此存放测试项目的全局环境变量。当然你也可以在测试用例和测试套中进行不同级别的环境变量定义。
api
testcase
testsuite

env
debugtalk

2. 测试网站介绍

https://pity.fun/#/
pity是一款专注于api自动化的工具,采用 Python+ FastApi+ React开发。

建议本地启动项目进行测试。

3.httprunner登录-api

代码演示
# login_api.ymlname: pity登录request:    url: http://127.0.0.1:7777/auth/login    method: POST    headers:        Content-Type: "application/json"    json:          "username": "tester"          "password": "tester"extract:    - code: "json.code"validate:   - eq: ["$code", 0]
执行测试
hrun  D:\code2022\HttpRunnerDemo\api\login_api.yml
测试报告

4.httprunner环境变量-env

代码演示
# login_api2.ymlname: pity登录request:    url:  ${ENV(base_url)}/auth/login    method: POST    headers:        Content-Type: "application/json"    json:        username: ${ENV(USERNAME)}        password: ${ENV(PASSWORD)}extract:    - code: "json.code"validate:    - eq: ["$code", 0]

env添加如下配置:

USERNAME=testerPASSWORD=testerbase_url=http://127.0.0.1:7777
执行测试
hrun  D:\code2022\HttpRunnerDemo\api\login_api2.yml

添加env的情况

去掉env的情况

测试报告

添加env通过的展示

去掉env报错的情况

5.httprunner用例关联-testcase

登录-----> 查询项目列表为例。
用户登录-api
# login_api2.ymlname: pity登录request:    url:  ${ENV(base_url)}/auth/login    method: POST    headers:        Content-Type: "application/json"    json:          "username": $username          "password": $passwordextract:    - msg: "json.msg"validate:    - eq: ["$msg", "$expect_msg"]
查询项目-api
# userlist_api.ymlname: 查询用户信息request:    url: ${ENV(base_url)}/project/list    method: GET    headers:        Content-Type: "application/json"        token: "$token"    params:        page: 1        size: 8extract:    - code: "json.code"validate:    - eq: ["$code", 0]
登录+查询-testcase
# userlist_testcase.ymlconfig:    name: "登录+查询用户信息"    variables:        username: ${ENV(USERNAME)}        password: ${ENV(PASSWORD)}    base_url: "${ENV(base_url)}"teststeps:-    name: login step 1    api: D:\code2022\HttpRunnerDemo\api\login_api2.yml    extract:        - token: json.data.token-    name: search step 2    api: D:\code2022\HttpRunnerDemo\api\userlist_api.yml    headers:        Content-Type: "application/json"        token: $token
执行测试
hrun  D:\code2022\HttpRunnerDemo\testcases\userlist_testcase.yml
测试报告

6.httprunner用例数据驱动

代码演示
api
# login_api3.ymlname: pity登录request:    url:  ${ENV(base_url)}/auth/login    method: POST    headers:        Content-Type: "application/json"    json:          "username": $username          "password": $passwordextract:    - msg: "json.msg"validate:    - eq: ["$msg", "$expect_msg"]
testcase
# login_ddt.ymlconfig:    name: "pity登录"teststeps:-    name: login_ddt    api: D:\code2022\HttpRunnerDemo\api\login_api3.yml
直接参数化-testsuit
代码演示
# login_ddt_testsuit.ymlconfig:    name: "login testsuite"testcases:-    name: call demo_testcase with data 1    testcase: D:\code2022\HttpRunnerDemo\testcases\login_ddt.yml    parameters:        username-password-expect_msg:            - ["tester","tester","登录成功"]            - ["tester1","tester1","用户名或密码错误"]            - ["tester12","tester12","预期失败的用例"]
执行测试
hrun  D:\code2022\HttpRunnerDemo\testsuites\login_ddt_testsuite.yml
测试报告
使用csv驱动-testsuit
代码演示
# login_ddt.ymlconfig:    name: "pity登录"teststeps:-    name: "$case_name"    api: D:\code2022\HttpRunnerDemo\api\login_api3.yml
# login.csvcase_name,username,password,expect_msgtester登录,tester,tester,登录成功,tester1登录,tester1,tester1,用户名或密码错误woody登录,woody,123456,登录成功
# # login_ddt_csv.yml  config:    name: "demo testsuite"testcases:-    name: $case_name    testcase: D:\code2022\HttpRunnerDemo\testcases\login_ddt.yml    parameters:        case_name-username-password-expect_msg: ${P(data/login.csv)}
执行测试
hrun D:\code2022\HttpRunnerDemo\testsuites\login_ddt_csv.yml
报告展示

debugtal驱动-testsuit

代码演示
# debugtalk.pydef get_login_ddt():    result=[        {"case_name": "tester", "username": "tester","password":"tester", "expect_msg": "登录成功"},        {"case_name": "tester1", "username": "tester1","password":"tester1", "expect_msg": "用户名或密码错误"},        {"case_name": "tester12","username":"tester12", "password":"tester12","expect_msg": "预期失败的用例"}    ]    return result
#login_ddt_debugtalk.ymlconfig:    name: "demo testsuite"testcases:-    name: $case_name    testcase: D:\code2022\HttpRunnerDemo\testcases\login_ddt.yml    parameters:        case_name-username-password-expect_msg: ${get_login_ddt()}
执行测试
hrun  D:\code2022\HttpRunnerDemo\testsuites\login_ddt_debugtalk.yml
报告展示

7.测试总结

api ---testcase--testsuit

8. 参考资料

httprunner视频讲解

https://www.bilibili.com/medialist/detail/ml1760693098

文档代码地址

https://gitee.com/rdtest/code2022/tree/master/HttpRunnerDemo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值