Pytest标记预期失败
@pytest.mark.xfail()标记的作用
- 期望测试用例是失败的,但是会运行此测试用例,并且不会影响其他测试用例的执行(即xfail标记并不会影响用例的运行)
- 如果预期失败的测试用例,执行失败的结果则是xfail(不会额外显示错误信息)
- 如果测试用例执行成功的结果是xpass,在报告中会将这些用例在“预期失败XFALL或意外传递XPASS部分”
应用场景
- 预期的结果是失败,实际结果也是失败,
- 预期的结果是失败,实际结果是成功
- 预期结果成功,实际结果确是失败
- 预期结果成功,实际结果也是成功
注:主要用于在我们执行一个用例时,预期结果是失败的,但是最后执行完成的结果缺失成功的
案例:
-
- 当一条用例我们预计他应该失败,但是执行的实际结果确成功了,pytest标记为“XPASS”
- 当一条用例我们预计他应该失败,执行的实际结果也是成功,pytest标记为“XFAIL”
- 当一条用例执行失败时,pytest标记为“FAILED”
- 当一条用例执行成功是,pytest标记为“PASSED”
import pytest @pytest.mark.xfail() # 标记预期失败 def test_case1(): print("预期结果失败,实际结果成功") assert 1 # ----实际结果为成功 @pytest.mark.xfail() # 标记预期失败 def test_case2(): print("预期结果失败,实际结果失败") assert 0 # 实际结果为失败 def test_case3(): print("实际结果成功") assert 1 # 执行成功 def test_case4(): print("实际结果失败") assert 0 # 执行失败
注:我们最应该关注的应该是当“预计失败,结果执行成功”,这不符合我们的预期,应该报“FAILED”
-
- 解决方式:在pytest.ini配置文件中加入xfail_strict = True,在执行后不符合我们预期的,就会报“FAILED”
浙公网安备 33010602011771号