全网最全httpruner自动化测试教程 全是干货

一、安装

1.1python环境

建议安装3.x版本,贴一个国内镜像地址,可以自行选择
淘宝镜像链接

1.2httprunner安装

执行以下命令pip install httprunner默认安装最新版本,笔者安装的2.4的版本,可以使用这条命令指定版本pip install httprunner==版本号

安装之后使用hrun -V查看版本号,打印版本号则安装成功
httprunner查看版本

二、脚手架介绍

2.1 安装脚手架

2.x版本执行hrun --startproject 项目名称
3.x和4.x请执行httprunner --startproject 项目名称
在这里插入图片描述

2.2脚手架项目介绍

脚手架类似vue的脚手架,默认给了一个最基本的项目格式

文件/夹意义
api独立定义的接口 yml/json 文件
reports执行后自动生成的测试报告文件
testcases测试用例文件
testsuites测试用例集文件
.env定义环境变量
.gitgnore定义托管到git时忽略的文件
debugtalk.py编写外部处理函数,可以在用例子中被调用

三、项目实践

3.1 api文件实践

默认的yml如下


name: demo api # 接口名称
variables: # 这个文件下的全局参数
    var1: value1 # 自定义的参数 自定义的key-value模式 在后面可以引用 ${key}
    var2: value2
request: #一个请求
    url: /api/path/$var1 # ip+端口+地址
    method: POST # 请求方法 get post delet put ...
    headers: # 定义请求头
        Content-Type: "application/json" # 请求头参数
    json: # post请求的body
        key: $var2
validate: # 断言request的请求响应状态是否为200
    - eq: ["status_code", 200]

这里我们自定义一个,此接口是笔者的网站接口,读者需要自行准备接口,直接用百度的也可以
login.yml文件


name: 登录接口-正向用例
variables: # 全局变量 只能在这个yml中使用
    password: zz102073
    id: 102073
    login_url: http://47.92.52.220:8088/login/login
base_url: ip+端口
request: # 参数信息
    # 可以使用全局变量写法
    # url: $login_url
    # url: /login/login
    url: /login/login
    # 调用py的函数
    # User-Agent: ${get_user_agent()}
    method: POST
    headers:
        Content-Type: "application/json"
    json:
        id: $id # 环境变量 在.env文件中创建 标准写法为大写 调用格式${ENV(变量名)}
        password: $password # 全局变量
validate: # 断言使用
    - eq: ["status_code", 200]
#    - {"check":"status_code","comparator":"eq","expect":200}
#    - {"check":"content","comparator":"contains","expect":"msg"}

.env文件

ID=2021102073
PASSWORD=zz102073

debugtalk.py

def get_user_agent():
    user_agent = ["测试1","测试2","测试3"]
    return random.choice(user_agent)

可以看见一些新的用法

  1. 定义了base_url之后可以在后文中使用
  2. ${ENV(变量名)}可以引用全局变量
  3. 如果要使用自定义的py函数,直接${get_user_agent()}就可以,

执行hrun api/login.yml,后面是相对路径的地址,可以看见打印了相关信息
在这里插入图片描述
测试报告
在这里插入图片描述

3.2 testcase场景串联案例

实际测试中,很多接口可能要使用前面接口的参数,这里演示一个


config:
    name: "获取题目信息配置"
# 就近覆盖 不以api中为基准
base_url: ip+端口

teststeps:
-
    name: 登录
    api: api/login.yml
    extract:
        #会覆盖后面api中的token
        - token: headers.Authorization
-
    name: 获取题目列表信息
    api: api/get_problem_list.yml

注意

  1. 上面的base_url会就近覆盖
  2. teststeps下面的每一个短横线就是一个api文件中的接口
  3. extract表示下面的参数会保存下来,在获取题目列表信息的接口中会引用他,如下
    在这里插入图片描述
    同样执行hrun 相对路径可以得到测试报告

3.3 testsuites案列

login.yml


config:
    name: "登录接口套件"
    base_url: "http://47.92.52.220:8088"

testcases:
-
    name: 登录接口套件
    testcase: testcases/login.yml
    parameters:
        #方式一 直接在当前文件添加
#        - title-id-password-status_code:
#              - ["正常登录","2021102073","zz102073",200]
#              - ["密码错误","2021102073","z102073",200]
        #方式二 用csv文件 默认全部是str类型,数据转换有问题
#        - title-id-password-status_code: ${P(datas/account.csv)}
        #方式三 最佳实践 使用函数
        - title-id-password-status_code: ${get_accounts()}

代码解释: 介绍了三种引入测试用例的方法,因为每个接口的测试用例可能存在几十个,parameters表示下面的是参数,用短横线分割

方式一
直接在当前文件添加,一眼懂,不解释
方式二
引用csv文件 默认全部是str类型,如果你的数据是int或者其他类型会报错
这里在项目里新建了一个data目录,一个account.cvs文件,这个格式可以引用${P(datas/account.csv)}

title,id,password,status_code
正常登录,2021102073,zz10273,200
密码错误,2021102073,z10273,200

方式三
使用py代码,实际操作中应该使用代码生成测试用例

def get_accounts():
    # 嵌套字典的列表 可以通过程序自动生成
    accounts = [
        {"title":"正常登录","id":"2021102073","password":"zz102073","status_code":200}
    ]
    return accounts

四、补充说明

fidder使用
如果有大量接口需要自动化测试,手动编写yml文件十分繁琐,可以使用抓包工具得到har文件,通过har2case 目标文件 -2y将har文件转换为yml文件

debug打印
可以使用hrun 目标文件 --log-level debug将打印级别调为debug模式,看见更多信息

httprunner官方
https://httprunner.com/docs/quickstart/详细可以阅读官方文件,以及更多断言写法

补充说明:创作不易,各位看官请点个赞或者收藏,文中若有bug请评论,以便及时修正

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值