pytest 已知用例会执行失败,想要指定它跳过执行,并标记为xfail (不同于skip)
Posted qika
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest 已知用例会执行失败,想要指定它跳过执行,并标记为xfail (不同于skip)相关的知识,希望对你有一定的参考价值。
有关skip的用法(请看:https://www.cnblogs.com/QiKa/p/13235129.html)
-------------------------------------------------------------------------------
1、使用方法:
事先知道会用例会执行失败,然后将会标记xfail,可以使用@pytest.mark.xfail(也可在用例内使用:pytest.xfail())
2、执行结果: 用例执行失败,结果展示为 小写 x, 如果运行成功,结果会展示为大写 X 3、用途: 比如遇到了一些 登录后才能执行其他用例的,但是当登录报错失败了, 那么这时候登陆后的这些用例就可以直接标记跳过执行 (不然都登录失败了,后面的用例执行也没意义了,都会失败报错) 例: 新建test_demo.py: canshu = [{"user":"amdin", "psw":"123456"}] @pytest.fixture(scope="module") def login(request): #写一个login函数,并使用fixture装饰(这也相当设置了一个预置条件:登录) 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_Login这个类使用参数化操作,将上面被装饰的login函数,当做参数传入用例(直接使用函数名即可) class Test_Login(): def test_case1(self, login): result = login print("case1,登录结果:%s" % result) assert result == True def test_case2(self, login): result = login print("case2,登录结果:%s" % result) if not result: pytest.xfail("登录不成功, 标记为xfail") assert 1 == 1 def test_case3(self, login): result = login print("case3,登录结果:%s" %result) if not result: pytest.xfail("登录不成功, 标记为xfail") assert 1 == 1 if __name__ == "__main__": pytest.main(["-v", "test_demo.py"])
以上是关于pytest 已知用例会执行失败,想要指定它跳过执行,并标记为xfail (不同于skip)的主要内容,如果未能解决你的问题,请参考以下文章
pytest学习和使用10-Pytest中的测试用例如何跳过执行?
pytest-16-用例a失败,跳过用例b和c并标记失败xfail