【HttpRunner学习总结1】HttpRunner3.0

一、HttpRunner简介:

HttpRunner 是一款面向HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

HttpRunner 是一个基于Python 开发的测试框架,可以运行在macOS、Linux、Windows 系统平台上。

HttpRunner 支持Python 3.4 及以上的所有版本,并使用Travis-CI 进行了持续集成测试,测试覆盖的版本包括2.7/3.4/3.5/3.6/3.7。虽然HttpRunner 暂时保留了对Python 2.7 的兼容支持,但强烈建议使用Python 3.4 及以上版本。

HttpRunner 3.x最大的改变是执行用例用的是 python 的 pytest 框架,支持3种格式的用例:YAML/JSON/pytest 代码
对比 HttpRunner 2.x 以前版本,早期版本用的是 unittest 框架,只支持2种格式的用例: YAML/JSON

二、HttpRunner核心特性:

 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求;

 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性

 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑

 支持完善的测试用例分层机制,充分实现测试用例的复用

 测试前后支持完善的 hook 机制

 响应结果支持丰富的校验机制

 基于HAR 实现接口录制和用例生成功能(har2case)(Fiddler抓包,生成HAR文件)

 结合 Locust 框架,无需额外的工作即可实现分布式性能测试

 执行方式采用 CLI 调用,可与Jenkins 等持续集成工具完美结合

 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录

 极强的可扩展性,轻松实现二次开发和Web 平台化

三、在HttpRunner 自动化测试项目中,主要存在如下几类文件:

YAML/JSON(必须):测试用例文件,一个文件对应一条测试用例

debugtalk.py(可选):脚本函数,存储项目中逻辑运算函数

该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程的根目录(当前工作目录CWD);该文件不存在时,运行测试的路径将被视为当前工作目录CWD

测试用例文件中的相对路径(例如.csv)均需基于当前工作目录CWD

运行测试后,测试报告文件夹(reports)会生成在当前工作目录CWD

.env(可选):存储项目环境变量

.csv(可选):项目数据文件,用于进行数据驱动

reports(自动生成):运行后自动生成,无需创建

四、环境安装

pip3 install httprunner

#如果之前装过低版本的,可以加 -U 参数升级到最新版
pip3 install httprunner -U

检验是否安装成功:

hrun -V

 也可以查看详情:

pip show httprunner

五、核心命令

安装 HttpRunner 后,以下 5 个命令会写入系统环境变量配置。

1.hrun:指令 httprunner run 的别名,用于运行YAML/JSON/Pytest 测试用例。

hrun 文件名称

2.hmake: 指令 httprunner make 的别名,将 YAML/JSON 用例转换成 pytest 用例。

3.har2case:指令 httprunner har2case 的别名,将 HAR 文件转换YAML/JSON 用例。

har2case XXXXX.har py文件

har2case XXXXX.har -2y yaml文件

har2case XXXXX.har -2j json文件

4.locust: 利用 locust 运行性能测试。

六、参数设置
1. 支持的合法的请求方式method
GET、POST、PUT、PATCH、DELETE,忽略大小写,推荐使用大写。

2. 支持的请求参数类型
json,指定json请求参数
data,指定x-www-form-urlencoded参数
params,指定查询字符串参数

3. 支持的断言方式
eq、equals、==、is,相等断言
lt、less_than,小于
le、less_than_or_equals,小于等于
gt、greater_than,大于
ge、greater_than_or_equals,大于等于
contains,包含

4. 支持的断言方式实际值
status_code,提取响应状态码
cookies,提取cookies信息
headers,提取请求头信息
content、 text、json,提取响应数据,如果接口返回的是json数据,那么这三个获取均类似于Python中字典或者嵌套字典的列表。取值用json.key来取值
ok,当前的请求是否成功
url,提取请求url信息

七、参数化处理

1. base_url
我们可以把url前面公共的地方提取为base_url,简化url的写法。

# 如果有设置base_url会指定拼接一个完整的url路径

# 如果有设置base_url会指定拼接一个完整的url路径
base_url: 'http://127.0.0.1:8000'

request:
#    url: 'http://127.0.0.1:8000/user/login/'
    url: '/user/login/'

2. 设置参数
在variables中设置变量的值,调用时使用$变量名即可。

注意:定义变量之后,可以在定义变量下方的任意地方调用,一般在当前文件中才能调用

variables:
	# 变量key: 变量的值
    uname: 'aaron123'
    passwd: '123456'
    status: 200
...
    json:
        username: $uname
        passwd: $passwd
validate:
    - eq: ["status_code", $status]

3. env变量
在项目根路径下的.env文件中也可以定义变量,使用key=value的方式去定义。
在.env文件中定义的变量,可以在任意文件中调用

建议数据库相关配置、base_url、常用用户数据等配置在环境变量中

USERNAME=aaron123
PASSWORD=123456

在api/demo_api.yml文件中调用。使用${ENV(变量名)}调用。

json:
        username: ${ENV(USERNAME)}
        password: ${ENV(PASSWORD)}

4. debugtalk函数
我们如果想要给某个变量添加动态的值,可以在项目根路径下的debugtalk.py文件中定义函数。

debugtalk.py文件中的函数可以在任意yaml配置文件中调用。

def random_generate_user_agent():
    user_agent_list = ["Mozilla/5.0 Aaron", "Mozilla/5.0 Aaron1", "Mozilla/5.0 Aaron2",
                       "Mozilla/5.0 Aaron3"]
    return random.choice(user_agent_list)

然后在需要的地方调用函数,实现动态数据。
调用方式为${方法名()}。

User-Agent: "${random_generate_user_agent()}"

此时,User-Agent的值就会随机从user_agent_list中取出。

5. 用例依赖
如果当前有一个用例需要先登录才能正确请求,那么我们就需要在testcases/demo_testcase.yml文件中添加用例依赖关系。

# 定义全局配置信息
# a.定义teststeps中公共信息
config:
    name: "测试获取项目列表数据接口"

# 定义每个测试步骤
teststeps:
-
    name: "先登录"
    # 导入需要执行的用例的yml路径
    api: "api/login_api.yml"
    # 用于提取参数并创建变量(可多个),创建的变量可以在下方任意处调用
    extract:
    	# 把content响应体内的token值取出来,赋给变量token
        - token: content.token
-
    name: "获取项目列表数据"
    api: api/projects_api.yml

在api/projects_api.yml文件中,引用前面定义的token变量。

 headers:
        Authorization: "JWT $token"

6. variables优先级顺序:
testcase config variables > teststep extract > teststep variables > api variables

建议只在一个地方使用variables,不然项目混乱,不便管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值