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
posted @ 2023-04-13 21:56  A熙  阅读(81)  评论(0)    收藏  举报