- [PPJ_32] HttpRunnerManager进阶应用-0
- [PPJ_31] HttpRunnerManager进阶应用-0
- dockerfile制作HttprunnerManager镜像并
- RabbitMQ进阶攻略,分析RabbitMQ的典型应用场景,详
- [PPJ_24] 接口自动化测试平台HttpRunnerMana
- iOS runtime从菜鸟到应用(小灰进阶篇)
- [PPJ_26] HttpRunnerManager用例配置-0
- [PPJ_27] HttpRunnerManager用例配置-0
- [PPJ_28] HttpRunnerManager用例配置-0
- [PPJ_29] HttpRunnerManager用例配置-0
一、Hook引入背景
若接口在测试前后需要进行特殊处理,如执行前的初始化操作、执行完成后的等待操作。类似于 unittest 中的 setUp() 和 tearDown() 方法,HttpRunner中的Hook功能也支持此类操作。
- setup_hooks:在HTTP请求发送前执行hook函数,主要用于准备工作;也可实现对请求的request内容进行预处理
-
teardown_hooks:在HTTP请求发送后执行hook函数,主要用于测试后的清理工作;也可实现对响应的response 进行修改,例如进行加解密等处理
二、实践案例
案例描述:设置接口请求之后如果响应状态码为200,就等待100ms;否则就按照自定义设定的时间进行等待
测试接口:http://httpbin.org/get
请求类型:GET
1.编辑debugtalk.py代码,创建辅助函数sleep()
debugtalk.py
import hashlib
import time
# 定义获取sign的方法,传递用户名和密码参数
def getSign(user,passwd):
str = user+passwd # 拼接用户名+密码的字符串
md5 = hashlib.md5() # 调用hashlib模块的md5()方法
md5.update(str.encode(encoding='utf-8')) # 对str进行utf-8格式编码,然后用md5加密
sign = md5.hexdigest() # md5加密,并以16进制的字符串进行存储到sign变量
return sign
# 根据给定的 [用户名+密码] 生成md5加密的摘要信息,并返回sign的结果
print(getSign('admin','123456'))
def sleep(response,t):
if response.status_code==200:
time.sleep(0.1)
else:
time.sleep(t) # 根据t值,延迟设定的时间
(PS:getSign()
方法为上文所用到的md5加密函数,本文可暂时不调用该函数)
2.创建用例,引用辅助函数
新建用例test_get_request_hook,本次在非200状态码时自定义延迟2s响应时间,则在其中设置引用辅助函数 ${sleep($response,2)}
hooks中引用辅助函数:
操作:variables/parameters --> add hooks --> teardown_hooks:填写引用的辅助函数
对响应状态码(status_code)设置断言:
操作:extract/validate --> add validate --> validate:设置断言所检查的响应字段、逻辑关系、字符类型、预期值
执行用例:
200状态,延迟0.1s响应时间构造非200响应状态,如404状态。修改接口地址为:http://httpbin.org/getaaa
404状态,延迟2s响应时间
网友评论