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 ...
随机推荐
- scatter
一.matplotlib.pyplot.scatter用来画散点图 import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcPar ...
- Swift学习笔记6
1.用类型检查操作符(is)来检查一个实例是否属于特定子类型.若实例属于那个子类型,类型检查操作符返回 true,否则返回 false. 2.某类型的一个常量或变量可能在幕后实际上属于一个子类.当确定 ...
- 2、Python-流程控制
比较运算符 运算符 描述 示例 == 检查两个操作数的值是否相等,如果是则条件变为真. 如a=3,b=3则(a == b) 为 true. != 检查两个操作数的值是否相等,如果值不相等,则条件变为真 ...
- javascript 值类型和引用类型
值类型 1. 值类型:string/number/boolean/undefined: 2. 存储:值类型的数据,存储的是数据本身的变量: 3. 赋值:直接将存储的数据复制一份进行赋值,两份数据在内存 ...
- $使用dom4j可解析 返回&#x等字样的 html转义字符【转】
如果以GET或POST请求某个系统返回,带有 $#x 那很有可能是axis服务器返回的. <?xml version="1.0" encoding="UTF-8&q ...
- Thread的setDaemon(true)方法
定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开.优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务. 设置:通过setDaemon(true)来设置线程为“守护 ...
- Selenium自动化Page模式(Python)
Selenium是当前主流的web自动化工具,提供了多种浏览器的支持(Chrome,Firefox, IE等等),当然大家也可以用自己喜欢的语言(Java,C#,Python等)来写用例,很容易上手. ...
- sql 中多表查询-leetcode : Combine Two Tables
因为对数据库的内容早都忘得差不多了,所以我的第一感觉是: select Person.FirstName, Person.LastName, Address.City from Person, Add ...
- C# 摇奖机实例(线程)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- mysql gtid 第一篇
GTID1 简介 就是全局事务ID(global transaction identifier )2 构成 uuid+transaction_id 3 格式 7a07cd08-ac1b-11 ...