遇到的问题
问题一:
- testcase目录下创建case.yml,case.yml中引用了api.yml,case.yml内容如下:
teststeps:
-
name: 获取会议纪要列表
api: api/meetingassistant/api.yml
extract:
- id: content.data
validate:
- eq: ["status_code", 200]
- testcase目录下执行
hrun case.yml
,报错httprunner.exceptions.ApiNotFound: api.yml not found!
解决方案:在这个项目的根目录(testcase的上一级目录)下执行hrun case.yml
问题二:
自定义函数传入字符串,自定义函数不被执行,代码如下:
name: 删除最后创建的记录
base_url: ${ENV(base_url)}
variables:
id: ${get_value("id",$data)} # 自定义函数get_value中传入字符串“id”,此函数不被执行
解决方案:在variables中定义变量,将要传的字符串赋值给这个变量,代码如下:
name: 删除最后创建的记录
base_url: ${ENV(base_url)}
variables:
key: id # 此处定义变量key
id: ${get_value($key,$data)} # 传入变量key
问题三:
运行报错:
File "d:\python\python36\lib\site-packages\httprunner\loader.py", line 201, in load_dot_env_file
raise exceptions.FileFormatError(".env format error")
httprunner.exceptions.FileFormatError: .env format error
解决方案:
- 修改loader.py 201行代码如下
- 再次执行脚本,加上参数
--log-level debug
,查看日志中variable,value的值
raise exceptions.FileFormatError(".env format error", variable, value)
经排查,我的脚本报错原因是:最后一行是"\n",删除最后一行的"\n"即可通过
上传文件
script.py
name: 上传图片
base_url: ${ENV(base_url)}
variables:
fileName: 上传图片.png
getFile: ${getFile($fileName)}
request:
url: /file/FastDFSUploadController/upload
method: POST
files:
file: [$fileName,$getFile]
validate:
- eq: ["status_code", 200]
debugtalk.py
def getFile(filePath):
return open(filePath,"rb")
提取返回结果
返回结果是json
request:
...
extract:
data: content.data.errcode
...
返回结果是list
request:
...
extract:
data: content.0.errcode
...
用正则表达式提取
request:
...
extract:
data: abc(.*?)$
...
调试
httprunner提供了不同级别的日志信息(调试脚本用得着),操作如下:
执行脚本时,后面加上--log-level
,比如 hrun case.yml --log-level debug
,debug
是日志级别,默认是 info
。注:此日志只在窗口展示,不会存档。
failfast
执行用例,遇到失败的用例时,不再执行后续用例
hrun filepath/testcase.yml --failfast
命名规则
接口命名:
规则:mobile+接口url后两个字段+请求方式(get/post),驼峰命名
实例:mobileCommentAddPost
网友评论