# -*- coding: utf-8 -*-
# @Time : 2023/6/7 20:36
# @Author : yanfa
# @user : yanfa
# @File : pytest_mark_for_skip_and_xfail.py
# @remark: pytest设置跳过、预期失败用例
"""
mark.skip mark.xfail是pytest的内置标签,可以处理一些特殊的测试用例,不能成功的测试用例
skip:始终跳过该测试用例
skipif:遇到特定情况跳过该测试用例
xfail:遇到特定情况,产生一个期望失败的输出
"""
import sys
import pytest
"""skip使用场景
1/调试时不想运行这个用例
2/标记无法在某些平台上运行的测试功能
3/在某些版本中执行,其他版本中跳过
4/比如,当前的外部资源不可用时跳过,如数据在数据库,如果数据库连接失败,执行了也会报错。
解决1:添加装饰器
@pytest.mark.skip
@pytest.mark.skip(reason='')
@pytest.mark.skipif(expr,reason='')
"""
@pytest.mark.skip
def test_demo1():
print("没开发完")
@pytest.mark.skip(reason='代码没实现')
def test_demo2():
return False
@pytest.mark.skipif(sys.platform=="darwin",reason='为mac系统进行跳过')
def test_demo2():
return True
"""
解决2:代码中添加跳过代码
pytest.skip(reason)
"""
# def check_login():
# return False
#
# def test_function():
# print("start")
# if not check_login():
# pytest.skip("还未初始化完毕")
# print("end")
"""xfail使用场景
与skip类似,预期结果为fail,标记用例为fail,主要是提示作用,可以用于标记有缺陷的用例,修复完成后再去掉该装饰器。
用法:
1/添加装饰器@pytest.mark.xfail
2/代码中执行 pytest.xfail(reason='功能尚未完成')"""
@pytest.mark.xfail
def test_demo3():
print("xfail方法执行")
# assert 1 == 2 #标记为XFAIL
assert 1 == 1 #标记为XPASS
def test_demo4():
print("start")
pytest.xfail(reason="功能尚未开始")
print("测试过程")
assert 1==1 #1 xfailed in 0.02s