httprunnerManager- Hook机制

摘要:
类似于unittest中的setUp()和tearDown()方法,HttpRunner中的Hook功能也支持此类操作。
一、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
importhashlib
importtime

#定义获取sign的方法,传递用户名和密码参数
defgetSign(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变量
    returnsign
#根据给定的 [用户名+密码] 生成md5加密的摘要信息,并返回sign的结果
print(getSign('admin','123456'))

defsleep(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:填写引用的辅助函数
httprunnerManager- Hook机制第1张
对响应状态码(status_code)设置断言:
操作:extract/validate --> add validate --> validate:设置断言所检查的响应字段、逻辑关系、字符类型、预期值
httprunnerManager- Hook机制第2张
执行用例:
200状态,延迟0.1s响应时间
httprunnerManager- Hook机制第3张
构造非200响应状态,如404状态。修改接口地址为:http://httpbin.org/getaaa
404状态,延迟2s响应时间

免责声明:文章转载自《httprunnerManager- Hook机制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#连接MYSQL时带中文的查询读不出来Oracle表解锁下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

http协议的POST传数据

PostRequest使用StreamWriter对象写入请求流,不需要使用HttpUtility.UrlEncode显示转码,而下面的需要显示转码,还需要将参数转为字节码 蛋疼…………。 public static string PostRequest(string url, string postData) { HttpWebRequest httpW...

HttpClient 教程 (A)

前言 超文本传输协议(HTTP)也许是当今互联网上使用的最重要的协议了。Web服务,有网络功能的设备和网络计算的发展,都持续扩展了HTTP协议的角色,超越了用户使用的Web浏览器范畴,同时,也增加了需要HTTP协议支持的应用程序的数量。 尽管java.net包提供了基本通过HTTP访问资源的功能,但它没有提供全面的灵活性和其它很多应用程序需要的功能。Ht...

RN 使用第三方组件之react-native-image-picker(拍照/从相册获取图片)

首先给个github地址:https://github.com/react-community/react-native-image-picker  英文不行的看下面这个笔记 该插件可以同时给iOS和Android两个平台下使用,但是需要配置下各自平台下的文件  1.   首先,安装下该插件:      npm install react-native-i...

HttpServletrequest 注册和登录、request域对象、web动态shop

 summarize httpServletResponse跟 Request一个是响应一个是请求,获得客户端请求方式 用getMethod 得到的是String类型, response:属于重定向请求、地址栏URL会发生改变、想服务器发送两次请求 response解决中文乱码:response.setContentType("text/html;char...

浏览器的F5和Ctrl+F5

在浏览器里中,按F5键和按F5同时按住Ctrl键(简称Ctrl+F5),效果是不同,到底两者有什么区别呢? 假如我第一次访问过http://localhost/home,这个网页是个动态网页,每次访问都会去访问Server,但是它包含一个一个静态资源http://localhost/content/bootstrap.css,浏览器在显示这个网页之前需要发...

InstallShield 静默安装

可能先需要获取安装包参数,安装包参数获取/?或是/HELP InstallScrip工程 1. 在命令行窗口中使用 -R 参数(即record) 运行安装程序。 例如:Setup.exe -RorSetup.exe -r -f1"c:setup.iss" //-f1:指定iss文件输出路径 2. 正常安装,在安装结束后不能选择“立刻重启动计算机”的选...