辅助函数debugtalk.py
Httprunner框架中,使用yaml或json文件进行用例描述,无法做一些复杂操作,如保存一些数据跨文件调用,或者实现一些复杂逻辑判断等,为了解决这个问题,引入了debugtalk.py辅助函数来进行一些复杂操作。
操作步骤:
1.在项目根目录下新建debugtalk.py,在这个py文件中编写你要实现的逻辑代码函数,如下图:
2.在yaml或json中使用${函数名()}引用对应的函数,如下图:
# 调用 debugtalk.py文件中的函数
- config:
name: 百度主页
base_url: https://www.baidu.com
output:
- title
- test:
name: 百度搜索
request:
url: /s
method: GET
headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
params:
wd: ${get_value()}
extract:
- title: (.+?)
validate:
- eq: [$title,"猫_百度搜索"]
hook机制
Httprunner 框架中的 hook 机制相当于unittest框架中的 setup , teardown 函数,用来进行测试用例执行之前的环境初始化以及测试用例执行完毕之后的环境清理操作。
httprunner 中的 hooks 机制可以用在测试用例层级也可以用在测试步骤层级,其关键字是:setup_hooks、teardown_hooks
使用步骤:
1.一般在debugtalk.py中编写相应的初始化及环境清理函数
2.在测试用例文件中的 config 及test 中根据需要加入setup_hooks、teardown_hooks
# hook 是完成初始化和清理工作的
- config:
name: 百度主页
base_url: https://www.baidu.com
output:
- title
# 放到用例层级
setup_hooks:
- ${setup_case()}
teardown_hooks:
- ${teardown_case()}
- test:
name: 百度搜索
# 放到步骤层级
setup_hooks:
- ${setup_start(我是传入的参数)}
teardown_hooks:
- ${teardown_close(我是传入的参数)}
request:
url: /s
method: GET
headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
params:
wd: ${get_value()}
extract:
- title: (.+?)
validate:
- eq: [$title,"猫_百度搜索"]
忽略跳过用例:
Httprunner框架中使用和unittest类似的方式进行忽略跳过用例,关键字有3个:
skip:无条件跳过用例
skipIf:条件成立,返回值为True时候成立(非0、非空等为true)
kipUnless:条件不成立,返回值为False时候成立(0、空等为false)
上述关键字只能在test 测试步骤中使用
# skip是用来忽略跳过测试用例
- config:
name: 百度主页
base_url: https://www.baidu.com
output:
- title
- test:
name: 百度搜索
# 忽略跳过用例只能在测试步骤中使用
skip: 无条件跳过
# skipIf: True # 条件为 True 时跳过
# skipUnless: False # 条件为 False 时跳过
request:
url: /s
method: GET
headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
params:
wd: 猫
extract:
- title: (.+?)
validate:
- eq: [$title,"猫_百度搜索"]
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!!