httprunner学习20-跳过用例skip/skipIf/skipUnless
前言
在实际工作中,我们有时候会需要对测试用例加判断,比如某个接口功能暂时去掉了,我们希望对这个用例skip不去执行。
当其它的接口依赖于登陆接口返回的token时候,如果登陆都失败了,后面的接口,我们希望也不用执行了。httprunner 中可以用 skip
和 skipIf
去实现此功能。
unittest提供了一些跳过指定用例的方法
- @unittest.skip(reason):强制跳转。reason是跳转原因
- @unittest.skipIf(condition, reason):condition为True的时候跳转
- @unittest.skipUnless(condition, reason):condition为False的时候跳转
- @unittest.expectedFailure:如果test失败了,这个test不计入失败的case数目
httprunner 框架延用了 skip/skipIf/skipUnless 三个功能
skip跳过用例
skip是无条件跳过用例,不执行此用例,后面可以加上描述跳过此用例的原因
- config:
name: httpbin api test
request:
base_url: http://www.httpbin.org
- test:
name: get request
skip: 此功能已去除,skip掉
times: 1
request:
url: /get
method: GET
validate:
- eq: [status_code,200]
执行结果会显示此用例已经 skipped
跳过了
D:\soft>hrun test_httpbin.yml
get request
s
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK (skipped=1)
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\reports\1571152267.html
skipIf 和 skipUnless
比如我们现在的业务场景是,有个登陆的接口获取token,其它的接口用例依赖与登陆的token,可以在debugtalk.py写个获取登陆的函数获取token值
具体参考前面这篇https://www.cnblogs.com/yoyoketang/p/11588363.html
import requests
host = "http://127.0.0.1:8000/"
def token(user="test", psw="123456"):
'''
登录获取token # # 上海悠悠,QQ交流群:750815713
:param user: 用户名
:param psw: 密码
:return: token
'''
login_url = host+"api/v1/login/"
headers = {
"Content-Type": "application/json"
}
body = {
"username": user,
"password": psw
}
r = requests.post(login_url, headers=headers, json=body)
try:
return_token = r.json()["token"]
except:
print("大兄弟,返回的不是标准json格式,或者没取到token, 别问我为什么报错, 因为返回内容:\n %s" % r.text)
return_token = ''
return return_token
if __name__ == "__main__":
print("获取到token值:%s" % token())
函数 token() 实现的功能是获取到返回token值,登陆失败没token值,或者token值为空时默认返回None。那么获取到为True,没获取到为False。
- skipIf 条件成立,返回值为True时候成立
- skipUnless 条件不成立,返回值为False时候成立
接下来在用例里面写个判断,当函数 token() 为False的时候跳过用例,所以这里用skipUnless。
先调用 ${token(test1, 12345622) 函数,把返回值传给变量 token , 后面的用例全部引用 $token 这个变量就可以了。
- config:
name: logincase
variables:
- token: ${token(test1, 123456)}
# 上海悠悠,QQ交流群:750815713
- test:
name: get user info case1
skipUnless: $token
request:
url: http://127.0.0.1:8000/api/v1/user/info/
method: GET
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
Authorization: Token $token # 引用token
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.0.age, 20]
- eq: [content.0.name, yoyo]
- eq: [content.0.mail, 283340479@qq.com]
接下来执行用例,是可以正常运行的
D:\soft\untitled\projectdemo>hrun test_skip_demo.yml
INFO Loading environment variables from D:\soft\untitled\projectdemo\.env
get user info case1
INFO GET http://127.0.0.1:8000/api/v1/user/info/
INFO status_code: 200, response_time(ms): 261.48 ms, response_length: 190 bytes
INFO start to validate.
.
----------------------------------------------------------------------
Ran 1 test in 0.276s
OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\projectdemo\reports\1571153932.html
把用例里面 token: ${token(test1, 123456111)}
密码改成错误的密码,这样获取不到token值,就会跳过此用例
D:\soft\untitled\projectdemo>hrun test_skip_demo.yml
INFO Loading environment variables from D:\soft\untitled\projectdemo\.env
大兄弟,返回的不是标准json格式,获取没取到token, 别问我为什么报错, 返回内容:
codemsg
get user info case1
s
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK (skipped=1)
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\projectdemo\reports\1571154164.html
skipIf 的用法和 skipUnless 恰好相反。
httprunner学习20-跳过用例skip/skipIf/skipUnless的更多相关文章
- 跳过用例skip
1.装饰器,放在函数前面,跳过用例 @pytest.mark.skip(reason="no way of currently testing this") import pyte ...
- selenium+python自动化unittest之跳过用例skip
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例 ...
- httprunner学习19-重复执行用例
前言 使用httprunner做接口测试过程中,在工作中会遇到这种场景,发现某个接口不稳定,想重复运行100次用例,甚至1000次,看成功率. yml脚本 - config: name: httpbi ...
- httprunner学习9-完整的用例结构(yaml&json)
前言 前面几篇零散的学了一些httprunner的知识点,那么一个完整的 YAML/JSON 用例文件包含哪些关键字呢? 测试用例结构 在 HttpRunner 中,测试用例组织主要基于三个概念: 测 ...
- unittest_skip跳过用例执行(3)
在执行测试用例时,有时候有些用例是不需要执行的,比如版本迭代用例弃用,测试周期短只需要执行优先级高的用例,那我们怎么办呢?难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作 ...
- pytest八:skip 跳过用例
这是一个快速指南,介绍如何在不同情况下跳过模块中的测试1.无条件地跳过模块中的所有测试:pytestmark = pytest.mark.skip("all tests still WIP& ...
- Selenium2+python自动化70-unittest之跳过用例(skip)
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例 ...
- unittest之跳过用例(skip) (含如何调用类里面函数相互调取变量的方法)
当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没 ...
- Selenium2+python自动化70-unittest之跳过用例(skip)【转载】
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例 ...
随机推荐
- JS 常见问题
JavaScript 是一种有趣的语言,我们都喜欢它,因为它的性质.浏览器是JavaScript的主要运行的地方,两者在我们的服务中协同工作.JS有一些概念,人们往往会对它掉以轻心,有时可能会忽略不计 ...
- 20165214 2018-2019-2 《网络对抗技术》Exp8 Web基础 Week11—12
<网络对抗技术>Exp8 Web基础 Week11-12 一.实验目标与内容 1.实践内容 (1).Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与P ...
- 第6课 nullptr_t和nullptr
一. nullptr与nullptr_t (一)nullptr_t是一种数据类型,而nullptr是该类型的一个实例.通常情况下,也可以通过nullptr_t类型创建另一个新的实例. (二)所有定义为 ...
- 用Python 绘制分布(折线)图
用Python 绘制分布(折线)图,使用的是 plot()函数. 一个简单的例子: # encoding=utf-8 import matplotlib.pyplot as plt from pyla ...
- Maven 教程(11)— Maven远程仓库的各种配置
原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79545408 1.远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库 ...
- Java8 流式 API(`java.util.stream`)
熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C♯ 中,有 LINQ 来实现.那 ...
- Sitecore 8.2 扩展体验分析报告
本文简要介绍了如何为Experience Analytics创建自定义报告.在Sitecore术语中,我会说:创建新的报表维度和适当的报表以显示它们. 我们做的任务是:实现新的报告,显示不同网络浏览器 ...
- 金九银十跳槽高峰,面试必备之 Redis + MongoDB 常问80道面试题
前言 有着“金九银十”之称的招聘旺季已经开启,跳槽高峰期也如约而至. 本文为主要是 Redis + MongoDB 知识点的攻略,希望能帮助到大家. 内容较多,大家准备好耐心和瓜子矿泉水. Redis ...
- 查看电脑已保存的wifi及密码
1. 查看以保存的wifi名称 打开cmd(win+r) #查看已保存WiFi名称 netsh wlan show profiles 2. 查看已保存的wifi的密码 netsh wlan show ...
- 如何判断两个IP地址是不是处于同一网段?
个人理解,欢迎指正. 一.要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果-->网络号,如果网络号相同, 就在同一子网,否则,不在同一子网. 例:假定选 ...