HttpRunner使用总结
摘要:最近在用HttpRunner做接口自动化测试,写这篇博客对HttpRunner的使用加以总结
HttpRunner中文使用文档: https://cn.httprunner.org/
1、json返回值有list时,用0,1来取list的第一个或第二个,如:
{
"code":"000",
"msg":"成功",
"data":{
"id":"136683550996664320",
"remark":"",
"createTime":"2019-07-25 10:00:43",
"createBy":"131643817329397761",
"rooms":[
{
"roomId":"136683894208172032",
"roomCode":"CD1907256595A",
"roomName":"A"
},
{
"roomId":"136683894208172035",
"roomCode":"CD1907256595B",
"roomName":"B"
},
{
"roomId":"136683894208172038",
"roomCode":"CD1907256595C",
"roomName":"C"
}
],
"houseId":"136683550996664320"
}
}
如果我们要取第一个roomId,就可以这样写:
extract:
- roomId: content.data.rooms.0.roomId
2、https的请求如果报如下错误,要在config或请求头加上: verify: false
Traceback (most recent call last):
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051)
3、自定义函数写在debugtalk.py文件里
如我们在登录后通常回返回一个access_token,其它接口调用时都要在请求头里加上这个token。那我们可以在debugtalk.py自定义一个获取token的函数,并把这个token存到一个文件里,以供其它接口调用。
自定义的函数如下:
def teardown_saveAuthorization(response: requests.Response):
conf = configparser.ConfigParser()
conf.read(DATA_PATH, encoding="utf-8")
sections = conf.sections()
# list转换为str
str = ''.join(sections)
# 如果没有section,则添加
if str.find("TOKEN") < 0:
conf.add_section("TOKEN")
foo: dict = json.loads(response.text)
bar: str = "Bearer " + foo['data']['access_token']
# 写数据
conf.set("token", "access_token", bar)
conf.write(open(DATA_PATH, "r+", encoding="utf-8"))
return bar
在yml用例的调用如下:
teardown_hooks:
- ${teardown_saveAuthorization($response)}
4、环境变量的使用
在.env文件里设置环境变量,然后在用例就可以用$符号调用了
.env文件如下:
USERNAME=18610170001
PASSWORD=123456
base_url=https://api-gateway-pre.uoko.com
在ym用例里调用如下:
name: 获取验证码
base_url: ${ENV(base_url)}
request:
url: /auth/verification_code/${ENV(USERNAME)}
headers:
Content-Type: application/json;charset=UTF-8
method: POST
validate:
- eq:
- status_code
- 200
- eq:
- content.msg
- 成功
5、环境变量切换
HttpRunner默认使用.env文件里的环境变量,如果我还有一个test.env文件,那么可以用如下命令来切换:
hurn xxx.yml --dot-env-path test.env
6、快速生成一个项目,可用命令:–startproject+项目名,如下:
hrun --startproject xxx_api_test
7、用fiddler抓取请求,再导出.har文件,然后生成用例。
用fiddler抓取请求后,选择相应的请求,然后File->Export Session->Selected Sessions,再选择HTTPArchive v1.2 这个格式,如下图:
这样导出后会生成一个.har文件,如我们命名为login.har ,在用har2case这个命令生成用例,如:
har2case login.har //这样生成的是json格式的用例
生成yml格式的用例只要加上 -2y 即可,如下:
har2case login.har -2y
8、hook函数不能在testsuites里调用,如:
config:
name: 新增房源-签约租客合同流程
base_url: ${ENV(base_url)}
verify: False
variables:
base_url: ${ENV(base_url)}
mobile: ${ENV(USERNAME)}
setup_hooks:
- ${setup()}
teardown_hooks:
- ${teardown()}
testcases:
-
name: 新增房源-签约租客合同
testcase: testcases/sign_tenant_contract_Flow_case.yml
这里的setup()和teardown()函数是不会执行的
9、从一个接口返回值里用extract引出的变量不能在当前接口里使用。
10、测试报告的生成路径,看在哪个目录下执行hrun命令就在哪个目录下生成,如果在项目根目录下执行hrun命令,则默认生成在reports文件夹下。如果不是在根目录执行,就行在对应目录新生成一个reports文件夹。
11、testsuitse里执行的testcase是无序的。
上一篇: 孩子误服药物怎么办?记下这些应急处理方法
下一篇: python中httprunner的使用
推荐阅读
-
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题_javascript技巧
-
Python使用dis模块把Python反编译为字节码的用法详解
-
Knockout text绑定DOM的使用方法_基础知识
-
devstack安装使用openstack常见问题与解决办法_MySQL
-
使用PHPMyAdmin修复论坛数据库的图文方法_php实例
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
mysql使用status命令测试/判断数据库是否连接
-
php生成数组的使用示例_PHP教程
-
《C++ Primer Plus 第六版》学习笔记:第十一章 使用类
-
有关帮助使用的5篇文章推荐