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

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

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

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

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

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

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

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

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

  5. python nose测试框架全面介绍十---用例的跳过

    又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...

  6. 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 ...

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

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

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

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

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

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

随机推荐

  1. JAVA记录-JDBC介绍

    JDBC(Java DataBase Connection),java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成 ...

  2. linux配置java环境变量jdk jre(详细)【转】

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  3. eclipse导入项目后找不到.class文件

    今天从git上clone代码到eclipse中,发现项目->右键没有java build path选项,而且src下没有包路径,都显示成文件夹. 发现项目中没有.class文件 后来发现项目-& ...

  4. ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解

    一.ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载.        公共类库 公共类库通常是指ThinkPHP/Library ...

  5. string和list互转

    import string str = 'abcde' list = list(str) OR list = str.split() list ['a', 'b', 'c', 'd', 'e'] st ...

  6. Keil5下载STM32库

    1.http://www.keil.com/dd2 2.3.以STM32L051C8为例 下载即可.

  7. Spring中的Bean配置

    IOC&DI概述 OPC(Inversion of Control):其思想是反转资源获取的方向.传统的资源查找方式要求组件向容器发起请求查找资源.作为回应,容器适时的返回资源.而应用了IOC ...

  8. MySQL中查询行数最多的表并且排序

    #切换到schema use information_schema; #查询数据量最大的30张表 并排序 select table_name,table_rows from tables order ...

  9. saltstack系列~第二篇

    一 简介:今天咱们来继续学习saltstack 二 命名和分组 1 命名规则 1 ID构成 机房-DB类型-角色(主/从)-IP地址 2 分组构成  分为master slave两组即可 2 分组规则 ...

  10. js遍历对象的方法

    1. for ... in 语句 for (let variable in object)  { ... } https://developer.mozilla.org/zh-CN/docs/Web/ ...