前言

当用例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的更多相关文章

  1. pytest十:用例 a 失败,跳过测试用例 b 和 c 并标记失败 xfail

    当用例 a 失败的时候,如果用例 b 和用例 c 都是依赖于第一个用例的结果,那可以直接跳过用例 b 和 c 的测试,直接给他标记失败 xfail用到的场景,登录是第一个用例,登录之后的操作 b 是第 ...

  2. pytest文档16-用例a失败,跳过测试用例b和c并标记失败xfail

    前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail 用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后 ...

  3. pytest_用例a失败,跳过测试用例b和c并标记失败xfail

    前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操 ...

  4. 【pytest官方文档】解读Skipping test functions,跳过测试用例详解

    有时候,为了满足某些场景的需要,我们知道有些测试函数在这时候肯定不能执行,或者执行了也会失败.那么我们 可以选择去跳过这个测试函数,这样也就不会影响整体的测试函数运行效果,不至于在你运行的众多绿色通过 ...

  5. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-跳过测试用例(6)

    初始化.跳过测试用例 # test_class_6.py import unittest from mock import mock from day_20200208_mooc.base.inter ...

  6. 『德不孤』Pytest框架 — 4、Pytest跳过测试用例

    目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...

  7. VMWare虚拟机提示:锁定文件失败,打不开磁盘...模块"Disk"启动失败的解决办法

    我出现该问题的原因: 昨天电脑一下子卡死,于是我就重启了电脑,重启之后我没有打开VMware虚拟机,结果第二天一上班打开VMware就发现出现了“锁定文件失败,打不开磁盘......模块"D ...

  8. 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

    今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了.在寻求原因的同时也找到了对应的解决方法. Run Unit T ...

  9. pytest 10 skip跳过测试用例

    pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者你希望失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试.常见事例时非win ...

随机推荐

  1. linux 桥接模式下 固定ip 设置

    DEVICE=eht0   #网卡名称BOOTPROTO=none #关闭自动获取  dhcp  IPADDR=192.168.0.178   #ip地址GATEWAY=192.168.0.1  DN ...

  2. 最简单的Android项目

    这是我在windows环境下,试验过的最简单Android项目,只用记事本和命令行即可完成. 环境准备 开发环境需要Java SDK(官网下载),Android SDK(官网下载). 首先安装Java ...

  3. CodeForces - 841D Leha and another game about graph

    给出一个连通图,并给每个点赋一个d值0或1或-1,要求选出一个边的集合,使得所有的点i要么d[i] == -1,要么 dgree[i] % 2 == d[i],dgree[i]代表i结点的度数. 考虑 ...

  4. 【洛谷P3413】萌数

    题目大意:求区间 [l,r] 内萌数的个数,其中萌数定义为数位中存在长度至少为 2 的回文子串的数字. 题解:l, r 都是 1000 位级别的数字,显然是一道数位 dp 的题目,暴力直接去世. 发现 ...

  5. tar命令--数据归档(一)

    虽然zip命令能够很好的将数据压缩和归档到单个文件,蛋挞不是linux 和unix的标准归档工具. ta命令最开始是用来将文件写到磁盘设备上的归档.然而他也能把输出写道文件里. 你会发现这个可选参数是 ...

  6. C语言做的句柄程序

    以vs2015为例---创建对话框程序  一直下一步,下一步,到最后 通过一个小型程序诸如 microsoft spy++我们可以获悉,窗口中失效按钮的句柄为0x00040AE8,由此我们可以给句柄发 ...

  7. Python----webserver项目2

    # 编码问题 - 为什么需要编码问题 - 本质上计算机只能识别01代码 - 如何用一长串01代码表示复杂的信息 - encode:编码  decode:解码 - 编码简史 - 二进制 - bit: 一 ...

  8. 对Canvas的研究

    1.标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形. 什么是 canvas? HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. ...

  9. jquery last 选择器 语法

    jquery last 选择器 语法 作用: :last 选择器选取最后一个元素.最常见的用法:与其他元素一起使用,选取指定组合中的最后一个元素(就像上面的例子). 语法:$(":last& ...

  10. 51nod 1228 序列求和(伯努利数)

    1228 序列求和  题目来源: HackerRank 基准时间限制:3 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  关注 T(n) = n^k,S(n) = T(1 ...