最近使用httprunner进行了项目的接口测试,中间踩了一些坑,特意记录下来,后来者注意避坑。

httprunner下载安装,这个不必多讲,聪明的脑瓜子们都应该会。
在命令行中,输入httprunner startproject 项目名
在pycharm中打开该项目,目录树自动建好:
-har
-reports:存放测试报告
-testcases:存放测试用例
-.env:存放环境变量
-debugtalk.py:放置在项目的根目录下
仿佛所有接口都应该从登录开始,哈哈

首先config配置测试用例的一些基本配置,其中用例名称name必填,base_url存放ip、port信息,variables存放全局变量、output可以在testcase间传递变量值,选填
test中包含:name、request(url、method、headers、params或者json)extract(提取token或cookies便于后面的用例调用)、validate(断言)
新增图层:该用例调用了登录接口中提取的token

文件导入:该用例调用了登录接口中提取的cookie,且用例既需要上传参数,放在data下面就行了;也需要上传zip文件,放在files下面,如果有多个文件需要上传,直接在files下面添加多个file,file1、file2、file3...

我在这里踩了个坑,在headers下面加了个content-type:multipart/form-data与file中的第三个参数:content-type:application/x-zip-compressed冲突,导致请求一直失败

在debugtalk.py中定义一个函数get_file,读取上传的zip文件,然后在file的第二个参数${get_file()}调用它。
另外:如果上传的是图片,也是一样的用法哦,直接套进去就可以了。
另外如果不想一个一个写接口,还有一个奇妙的办法:
打开fiddler抓包,选择要测试的接口,点击file-->export sessions-->selected sessions-->选择HTTPArchive V1.2导出.har文件
下载安装har2case
在命令行中输入:har2case F:\a.har -2y,生成了a.yml文件
然后就可以在httprunner中去执行了
另外:har2case F:\a.har -2j,可以生成a.json文件,也可以在httprunner中去执行;har2case F:\a.har,可以生成a.py
在命令行中输入:hrun F:\a.yml
运行成功后,在相应的路径下生成.html格式的report

如果有执行失败,可以在Detail下查看具体的log文件。
注意:3.1.3之后的版本不会直接生成html的测试报告,需要自己在后面加上--html=report.html
这里将登录的用户名和密码进行参数化,放到csv中,然后parameterize(简写P)内置函数引用csv文件

这里有个坑,我到现在还没有跳出来,真是悲伤,在httprunner2.X运行上面的代码是报错的,但是升级了环境3.X之后就是成功的。
另外:在添加断言eq: ["content.message","成功"]时报错,返回的message是unicode格式的。于是将content.message设成变量,然后在断言里引用它就成功了。







