用例a失败,跳过测试用例b和c并标记失败xfail
前言
当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail
用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录。
如果登录都失败了,那后面2个用例就没测试必要了,直接跳过,并且标记为失败用例,这样可以节省用例时间。
用例设计
1.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")
- # content of test_05.py
- # coding:utf-
- import pytest
- canshu = [{"user":"amdin", "psw":""}]
- @pytest.fixture(scope="module")
- def login(request):
- user = request.param["user"]
- psw = request.param["psw"]
- print("正在操作登录,账号:%s, 密码:%s" % (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("用例1:%s" % result)
- assert result == True
- def test_02(self, login):
- result = login
- print("用例3,登录结果:%s" % result)
- if not result:
- pytest.xfail("登录不成功, 标记为xfail")
- assert ==
- def test_03(self, login):
- result = login
- print("用例3,登录结果:%s" %result)
- if not result:
- pytest.xfail("登录不成功, 标记为xfail")
- assert ==
- if __name__ == "__main__":
- pytest.main(["-s", "test_05.py"])
上面传的登录参数是登录成功的案例,三个用例全部通过
- ============================= test session starts =============================
- platform win32 -- Python 3.6., pytest-3.6., py-1.5., pluggy-0.6.
- rootdir: D:\, inifile:
- plugins: metadata-1.7., html-1.19., allure-adaptor-1.7.
- collected items
- ..\..\..\..\..\..\YOYO\peizhi\test_05.py 正在操作登录,账号:amdin, 密码:
- 用例1:True
- .用例3,登录结果:True
- .用例3,登录结果:True
- .
- ========================== passed in 0.02 seconds ===========================
标记为xfail
1.再看看登录失败情况的用例,修改登录的参数
- # content of test_05.py
- # coding:utf-
- import pytest
- canshu = [{"user":"amdin", "psw":""}]
- @pytest.fixture(scope="module")
- def login(request):
- user = request.param["user"]
- psw = request.param["psw"]
- print("正在操作登录,账号:%s, 密码:%s" % (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("用例1:%s" % result)
- assert result == True
- def test_02(self, login):
- result = login
- print("用例3,登录结果:%s" % result)
- if not result:
- pytest.xfail("登录不成功, 标记为xfail")
- assert ==
- def test_03(self, login):
- result = login
- print("用例3,登录结果:%s" %result)
- if not result:
- pytest.xfail("登录不成功, 标记为xfail")
- assert ==
- if __name__ == "__main__":
- pytest.main(["-s", "test_05.py"])
运行结果:
- ============================= test session starts =============================
- platform win32 -- Python 3.6., pytest-3.6., py-1.5., pluggy-0.6.
- rootdir: D:\, inifile:
- plugins: metadata-1.7., html-1.19., allure-adaptor-1.7.
- collected items
- ..\..\..\..\..\..\YOYO\peizhi\test_05.py 正在操作登录,账号:amdin, 密码:
- 用例1:False
- F
- self = <YOYO.peizhi.test_05.Test_xx object at 0x00000000045ACF98>, login = False
- def test_01(self, login):
- '''用例1登录'''
- result = login
- print("用例1:%s" % result)
- > assert result == True
- E assert False == True
- D:\YOYO\peizhi\test_05.py:: AssertionError
- 用例3,登录结果:False
- x
- Test ignored.用例3,登录结果:False
- x
- Test ignored.
- ================================== FAILURES ===================================
- ___________________________ Test_xx.test_01[login0] ___________________________
- self = <YOYO.peizhi.test_05.Test_xx object at 0x00000000045ACF98>, login = False
- def test_01(self, login):
- '''用例1登录'''
- result = login
- print("用例1:%s" % result)
- > assert result == True
- E assert False == True
- D:\YOYO\peizhi\test_05.py:: AssertionError
- ===================== failed, xfailed in 0.06 seconds =====================
从结果可以看出用例1失败了,用例2和3没执行,直接标记为xfail了
用例a失败,跳过测试用例b和c并标记失败xfail的更多相关文章
- pytest十:用例 a 失败,跳过测试用例 b 和 c 并标记失败 xfail
当用例 a 失败的时候,如果用例 b 和用例 c 都是依赖于第一个用例的结果,那可以直接跳过用例 b 和 c 的测试,直接给他标记失败 xfail用到的场景,登录是第一个用例,登录之后的操作 b 是第 ...
- 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是第二个用例,登录之后操 ...
- 【pytest官方文档】解读Skipping test functions,跳过测试用例详解
有时候,为了满足某些场景的需要,我们知道有些测试函数在这时候肯定不能执行,或者执行了也会失败.那么我们 可以选择去跳过这个测试函数,这样也就不会影响整体的测试函数运行效果,不至于在你运行的众多绿色通过 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-跳过测试用例(6)
初始化.跳过测试用例 # test_class_6.py import unittest from mock import mock from day_20200208_mooc.base.inter ...
- 『德不孤』Pytest框架 — 4、Pytest跳过测试用例
目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...
- VMWare虚拟机提示:锁定文件失败,打不开磁盘...模块"Disk"启动失败的解决办法
我出现该问题的原因: 昨天电脑一下子卡死,于是我就重启了电脑,重启之后我没有打开VMware虚拟机,结果第二天一上班打开VMware就发现出现了“锁定文件失败,打不开磁盘......模块"D ...
- 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法
今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了.在寻求原因的同时也找到了对应的解决方法. Run Unit T ...
- pytest 10 skip跳过测试用例
pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者你希望失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试.常见事例时非win ...
随机推荐
- 32-第3章 数据链路层--抓包分析数据帧格式-ISO一图了然-小结
OSI理论模型 层级 名称 事物举例 功能 数据单位 别名 数据组成 协议举例 7 应用层 QQ.OA 网络通信 上层数据 上层数据 HTTP/FTP/DNS 6 表示层 web数据压缩.https加 ...
- Hibernate 最简单实例
我从网上下载了 hibernate-release-4.3.0.Final.zip,解压缩,把/lib/required文件夹下的所有jar包加入到eclipse项目中的Referenced Libr ...
- Laravel session的保存机制
与$_SESSION不同Laraver中的session是在当次程序执行完毕时保存到文件或其他存储引擎中的,也就是说如果使用了die等强制结束程序的函数将不会自动保存session导致session失 ...
- 一、Core授权-2 之.net core 基于Jwt实现Token令牌
一.Startup类配置 ConfigureServices中 //添加jwt验证: services.AddAuthentication(JwtBearerDefaults.Authenticati ...
- DevExpress中的gridControl选择问题
在Dev控件中,gridControl是最常用的一个了. //直接通过gridView获取当前行 dr=this.gridView1.GetDataRow(this.gridView1.Focused ...
- Zookeeper客户端使用(使用原生zookeeper)
Zookeeper客户端使用 一.使用原生zookeeper 在pom.xml中加入依赖 <dependency> <groupId>org.apache.zookeeper& ...
- [BZOJ1299]巧克力棒(博弈论,线性基)
[BZOJ1299]巧克力棒 Description TBL和X用巧克力棒玩游戏.每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度.TBL先手两人轮流,无法操作的人输. ...
- 通过shell监控网页是否正常,然后促发邮件告警
最近在网上找了下通过shell编写一个脚本来监控网页是否正常,如果不正常则促发邮件告警,修复后有一个修复的通知邮件:但一直没有找到全面的,所以自己研究了下,写了一个linux对接邮箱和通过shell写 ...
- 【HDU3308】LCIS
题目大意:维护一个长度为 N 的序列,支持单点修改,区间查询最长连续上升子序列的长度. 题解: 线段树维护一段区间左端点开始的 LCIS 长度,右端点开始的 LCIS 长度以及区间最优解.考虑进行合并 ...
- 透彻的了解Linux系统故障并解决
透彻的了解Linux系统故障并解决 2009-12-25 10:24 佚名 NET130 字号:T | T 经常应用Windows操作系统时,我们会很多的系统故障,于是很多人开始应用Linux操作系统 ...