pytest十:用例 a 失败,跳过测试用例 b 和 c 并标记失败 xfail
当用例 a 失败的时候,如果用例 b 和用例 c 都是依赖于第一个用例的结果,那可以直接跳过用例 b 和 c 的测试,直接给他标记失败 xfail
用到的场景,登录是第一个用例,登录之后的操作 b 是第二个用例,登录之后操作 c 是第三个用例,很明显三个用例都会走到登录。
如果登录都失败了,那后面 2 个用例就没测试必要了,直接跳过,并且标记为失败用例,这样可以节省用例时间。
用例设计
pytest 里面用 xfail 标记用例为失败的用例,可以直接跳过。实现基本思路
把登录写为前置操作
对登录的账户和密码参数化,参数用 canshu = [{"user":"amdin", "psw":"111"}]表示
多个用例放到一个 Test_xx 的 class 里
test_01,test_02, test_03 全部调用 fixture 里面的 login 功能
test_01 测试登录用例
test_02 和 test_03 执行前用 if 判断登录的结果,登录失败就执行,pytest.xfail("登录不成功, 标记为 xfail")
import pytest canshu = [{'user': 'admin', 'psw': '111'}] @pytest.fixture(scope='module')
def login(request):
user = request.param['user']
psw = request.param['psw']
print(f'\n正在操作登录,账号:{user},密码:{psw}')
if psw:
return True
else:
return False
@pytest.mark.parametrize('login', canshu, indirect=True)
class Test_xx():
def test_01(self, login):
'''用例1登录'''
result = login
print(f'用例1{result}')
assert result == True def test_02(self, login):
result = login
print(f'用例2,登录结果:{result}')
if not result:
pytest.xfail('登录不成功,标记为xfail')
assert 1 == 1 def test_03(self, login):
result = login
print(f'用例3,登录结果:{result}')
if not result:
pytest.xfail('登录不成功,标记为xfail')
assert 1 == 1 if __name__=='__main__':
pytest.main()
上面传的登录参数是登录成功的案例,三个用例全部通过 标记为 xfail
再看看登录失败情况的用例,修改登录的参数
从结果可以看出用例 1 失败了,用例 2 和 3 没执行,直接标记为xfail 了
import pytest canshu = [{'user': 'admin', 'psw': ''}] @pytest.fixture(scope='module')
def login(request):
user = request.param['user']
psw = request.param['psw']
print(f'\n正在操作登录,账号:{user},密码:{psw}')
if psw:
return True
else:
return False
@pytest.mark.parametrize('login', canshu, indirect=True)
class Test_xx():
def test_01(self, login):
'''用例1登录'''
result = login
print(f'用例1{result}')
assert result == True def test_02(self, login):
result = login
print(f'用例2,登录结果:{result}')
if not result:
pytest.xfail('登录不成功,标记为xfail')
assert 1 == 1 def test_03(self, login):
result = login
print(f'用例3,登录结果:{result}')
if not result:
pytest.xfail('登录不成功,标记为xfail')
assert 1 == 1 if __name__=='__main__':
pytest.main()
pytest十:用例 a 失败,跳过测试用例 b 和 c 并标记失败 xfail的更多相关文章
- pytest文档16-用例a失败,跳过测试用例b和c并标记失败xfail
前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail 用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后 ...
- pytest_用例a失败,跳过测试用例b和c并标记失败xfail
前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操 ...
- 用例a失败,跳过测试用例b和c并标记失败xfail
前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操 ...
- 【pytest官方文档】解读Skipping test functions,跳过测试用例详解
有时候,为了满足某些场景的需要,我们知道有些测试函数在这时候肯定不能执行,或者执行了也会失败.那么我们 可以选择去跳过这个测试函数,这样也就不会影响整体的测试函数运行效果,不至于在你运行的众多绿色通过 ...
- python nose测试框架全面介绍十---用例的跳过
又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...
- Pytest执行用例报Hint: make sure your test modules/packages have valid Python names.
近日,使用Pytest+Appium 实现APP端UI自动化,遇到Pytest收集用例失败的情况. 报错信息如下: test_room.py:None (test_room.py) ImportErr ...
- 『德不孤』Pytest框架 — 4、Pytest跳过测试用例
目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-跳过测试用例(6)
初始化.跳过测试用例 # test_class_6.py import unittest from mock import mock from day_20200208_mooc.base.inter ...
- VMWare虚拟机提示:锁定文件失败,打不开磁盘...模块"Disk"启动失败的解决办法
我出现该问题的原因: 昨天电脑一下子卡死,于是我就重启了电脑,重启之后我没有打开VMware虚拟机,结果第二天一上班打开VMware就发现出现了“锁定文件失败,打不开磁盘......模块"D ...
随机推荐
- 8、JPA-映射-双向一对一
一个管理对应一个部门,一个部门对应一个管理,例中由部门维护关联关系 实体类 Department package com.jpa.yingshe; import javax.persistence.* ...
- Study 2 —— 格式化输出
打印人物信息的两种方法第一种: Name = input('Input your name: ') Age = input('Input your age: ') Job = input('Input ...
- Java高并发秒杀API之高并发优化
---恢复内容开始--- 第1章 秒杀系统高并发优化分析 1.为什么要单独获得系统时间 访问cdn这些静态资源不用请求系统服务器 而CDN上没有系统时间,需要单独获取,获取系统时间不用优化,只是n ...
- SQL Server进阶(一)T-SQL查询和编程的背景
- Java Web之路(一)Servlet
前言 执行过程 Servlet 生命周期.工作原理:http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html Servlet的生命周期 ...
- Linux下解压缩
1)对于.tar结尾的文件 tar -xf all.tar 2)对于.gz结尾的文件 gzip -d all.gz gunzip all.gz 3)对于.tgz或.tar.gz结尾的文件 tar -x ...
- Java EE之 Hibernate 5.x版本中SchemaExport的用法
//hibernate 5.0.1 Final ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().confi ...
- luogu P4036 [JSOI2008]火星人
传送门 很久以前xzz大佬就喊我做这题,结果现在才做qwq 因为要在序列中插入,所以直接用\(Splay\)维护这个串的哈希值,插入就直接把那个点插♂进去,修改就把点旋到根,然后修改和pushup,询 ...
- luogu P2325 [SCOI2005]王室联邦
传送门 做法是dfs整棵树,当访问一个点\(x\)时,先访问儿子,若某个时刻子树大小\(\ge b\)时,就把那些点放在一个省里,省会记为\(x\),访问完儿子再把\(x\)加入栈.最后栈中剩余的没加 ...
- jquery 学习(六) - 事件绑定
HTML <!--绑定事件--> <div class="a1"> <button class="bt">按钮</bu ...