前言
例如:学了unittest,又看了pytest,以为可以歇一会了,又听说了httprunner,而且还超级方便超级简单!就像手动挡的车换了自动挡?受不了了,卷起来。
一、httprunner是什么?
httprunner是霍格沃兹学院集成pytest、allure等库的成熟框架,可以自动生成用例和代码。
二、httprunner初体验
1.引入库
安装命令如下
# 这里有个坑,默认安装的是最新版本的,但是最新版本不支持 ‘httprunner startproject xx项目名’命令
pip install httprunner
pip install har2case
python -m pip install markupsafe==2.0.1
# 如果已经安装了最新版本的建议卸载重装
pip uninstall httprunner
# 我安装了3.1.1版本的,现在可以了
pip install httprunner=3.1.1
安装成功后继续执行查看版本命令,如下图则表示已经安装成功啦
hrun -V
2. 自动生成httprunner框架
# httprunner startproject 项目名(也可写绝对地址)
# 注意这里的项目名必须是新的且4.0版本的httprunner无法执行此命令
httprunner startproject httprunner_case
生成的框架如下 【har】:存放har格式的文件,例如通过fiddler下载的.har格式就会放在这里。 【reports】:生成的测试报告 【testcases】:测试用例 【env】:存放环境变量 【debugtalk.py】:存储自定义函数,例如yml中可调用这里面的函数
3. fiddler导出har文件并转换成yaml文件
fiddler是一款抓包工具,具体使用方法可参考:https://blog.csdn.net/notHavaBug/article/details/120255922?spm=1001.2014.3001.5502 我们使用fiddler抓包我们要测试的接口然后导出har类型的文件再通过har2case转换成yml文件 fiddler 操作步骤:选中接口 - 点击File - Export Sessions - Selected Sessions…(如果要导出全部则选择All Sessions…) - 下拉框选择 HttpArchive v1.1 - next - 保存为.har的文件
如果对fiddler不熟,咱也是可以用浏览器的,比如我用的谷歌,F12查看 - Network - 点击下载图标即可(不推荐用浏览器导出,总是会出现奇奇怪怪的问题~),如图:
将保存好的文件转换成yml文件
# har转yml: har2case har文件路径 -2y(这里如果用-2j则是生成json文件)
har2case C:\Users\yzzn\Desktop\login.har -2y
# 自动执行yml文件:hrun yml文件路径
hrun login.yml
4. yml变量以及调用函数
测试用例中不可能少了变量的,那在yaml中又要怎么定义呢?
1. 定义环境变量
在httprunner自定义生成的框架中有一个.env文件,这个就是用来存放环境变量的,操作如下: 在.evn文件中,以键值对形式加入变量(不区分大小写): 在yaml文件中引用环境变量
${ENV(username)}
2. 定义局部变量
我们登录一个网站后token总是处处都需要用到,这个时候我们就需要提取接口的参数并作为其他接口的变量了,操作如下: 首先在yml文件中,在登录的接口加入extract属性并定义一个名字和返回数据中需要用到的字段名,例如我取名叫token,而我接口返回的数据格式是{code:xxx,data:{token:xxx,name:xxx}}那我的写法如下图:(content开头是固定格式哦!值得注意的是,这是一个局部变量!意思就是说只有当前yml文件可用,如果其他yml文件也想用的话,不好意思只能再写一个login接口) 调用局部变量的格式是 $ 变量名, 例如:$ token(不要留空格,这里是$ 是csdn的关键符号所以我留了空格)
3. 调用函数
在httprunner自定义生成的框架中有一个debugtalk.py,在这里定义你要的函数 在yml中引用: ${函数名()}
5. 生成allure报告
得先安装allure哦,可参考https://blog.csdn.net/notHavaBug/article/details/124176397
import os
import time
if __name__ == '__main__':
# 生成allure报告
date = time.strftime('%Y-%m-%d')
os.system(f'hrun har/login_test.py --alluredir=./reports/json --clean-alluredir')
os.system(f'allure generate --clean ./reports/json -o ./reports/{date}/html')
os.system(f'allure open ./reports/{date}/html')
# 也可以生成httprunner自带的html报告,就是比较丑
# os.system('hrun har/login_test.py --html=./reports/result.html --self-contained-html')
总结
持续研究中,如有不对之处,欢迎指出
|