既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
def hook\_setup():
print("开始--------hook\_setup")
def hook\_teardown():
print("结束--------hook\_teardown")
在 config 中使用hook
如果在 HttpRunner 中使用hook机制,那么将用到关键字 setup_hooks 和 teardown_hooks,且只会在当前 YAML/JSON 用例中执行一次。
setup_hooks: 在整个用例开始执行前触发 hook 函数,主要用于准备工作。
teardown_hooks: 在整个用例结束执行后触发 hook 函数,主要用于测试后的清理工作。
在 config 中引入 hook,修改如下:
- config:
name: login test
request:
base\_url: http://api.nnzhp.cn
setup\_hooks:
- ${hook_setup()}
teardown\_hooks:
- ${hook_teardown()}
接着,运行用例,得到如下结果:
从上面的用例执行情况,我们可以看到,一共执行了 2 个用例,debugtalk.py 中的 hook_setup() 和 hook_teardown() 都只执行了1次,这是因为在 config 中,hook机制的作用域是整个YAML用例。
在 test 中使用hook
在 test 中,我们也可以使用关键字 setup_hooks 和 teardown_hooks,在这里,它的作用域是针对当前 test,如果我们有多个 test,那么就会执行多次。
setup_hooks: 在 HTTP 请求发送前执行 hook 函数,主要用于准备工作;也可以实现对请求的 request 内容进行预处理。
teardown_hooks: 在 HTTP 请求发送后执行 hook 函数,主要用于测试后的清理工作;也可以实现对响应的 response 进行修改,例如进行加解密等处理。
我们可以在 debugtalk.py 中的函数增加传入参数的功能,简单修改如下:
def hook\_setup(request=""):
print("开始--------hook\_setup")
print("request请求:{}".format(request))
def hook\_teardown(response=""):
print("结束--------hook\_teardown")
print("response响应:{}".format(response))
我们可以在这里将 请求的request 和 响应的response 打印处理,然后分别在 2 个 test 中引入 hook,如下:
- config:
name: login test
request:
base\_url: http://api.nnzhp.cn
- test:
name: login case 1
省略部分内容
setup\_hooks:
- ${hook_setup($request)}
teardown\_hooks:
- ${hook_teardown($response)}
省略部分内容
- test:
name: login case 2
省略部分内容
setup\_hooks:
- ${hook_setup($request)}
teardown\_hooks:
- ${hook_teardown($response)}
省略部分内容
这个时候,我们再去运行用例,得到如下结果:
对比之前的结果,可以发现,test 中的 setup_hooks 和 teardown_hooks 是针对单个 test。
需要注意的地方
在使用 hook机制 的时候,我们需要注意一点,在上面的 test 中,我们使用了 teardown_hooks ,这里是在返回最终结果之前执行的,我们不能将从响应结果中提取到的数据,作为参数传入 hook_teardown 函数中。
我们需要简单修改一下 YAML 用例,将 第二个test 做如下修改:
- test:
name: login case 2
省略部分内容
extract:
- sign: content.login_info.sign
setup\_hooks:
- ${hook_setup($request)}
teardown\_hooks:
- ${hook_teardown($sign)}
省略部分内容
我们通过 extract 提取返回结果中的 sign ,并把它传入 hook_teardown() ,然后再去执行用例。
上面的结果,告诉我们找不到 sign 参数,这是因为 teardown_hooks 是在 最终数据返回前 的处理,而 extract 提取操作是在 返回数据之后 的处理。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新