Pytest跳过测试用例

pytest跳过测试用例:

  • 无条件跳过,@pytest.mark.skip(reason="跳过的原因,会在执行结果中打印")
  • 有条件跳过,@pytest.mark.skipif(条件表达式,reason="跳过的原因,会在执行结果中打印")

无条件跳过

  • 标记在函数中
    import pytest
    
    @pytest.mark.skip(reason = "不执行")
    def test_case1():
        print("第一个测试用例")
    
    def test_case2():
        print("第二个测试用例")

    注:在函数上方加入@pytest.mark.skip(reason = "不执行")后,该函数不会执行,并且会打印出不执行的原因

  • 标记在类的方法中
    import pytest
    
    class TestCase(object):
    
        @pytest.mark.skip(reason="没有完成,不执行")
        def test_case1(self):
            print("第一个测试用例")
    
        def test_case2(self):
            print("第二个测试用例")
  • 标记在类中
    import pytest
    
    @pytest.mark.skip(reason="这个类的所有不执行")
    class TestCase1(object):
    
        def test_case1(self):
            print("第一个测试用例")
    
        def test_case2(self):
            print("第二个测试用例")
  • 标记在模块中,这个py文件都不执行
    import pytest
    
    pytest.skip(allow_module_level=True)
    class TestCase1(object):
    
        def test_case1(self):
            print("第一个测试用例")
    
        def test_case2(self):
            print("第二个测试用例")
  • 在测试期间强制跳过
    import pytest
    
    def test_dome():
        for i in range(20):
            print(f"第{i}个用例")
            if i == 5:
                pytest.skip("跑不动了,不在执行")

    注:当i为5时,就不会在执行了,直接跳出循环了,与bark相似

有条件的跳过测试用例

  注:作用在函数、方法、类、模块中都和无条件跳过测试用例用法一致

  语法:@pytest.mark.skipif(条件表达式,reason=“跳过的原因”)

  • 案例:当操作系统为win32时,不执行
    import pytest
    import sys
    
    @pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行")
    def test_case1():
        print("执行第一个测试用例")
    
    def test_case2():
        print("执行第一个测试用例")

     

    注:当操作系统为win32时,test_case1不会执行,只有当操作系统不为win32时才会执行test_case1
  • 可以将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量
    • 案例:
      import pytest
      import sys
      
      # 不满足条件不执行
      markskipif = pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行")
      # 直接强制不执行
      markskip = pytest.mark.skip("本次不进行测试")
      
      @markskip
      def test_case1():
          print("执行第一个测试用例")
      @markskipif
      def test_case2():
          print("执行第二个测试用例")
      
      def test_case3():
          print("执行第三个测试用例")
      注:直接用装饰器的方式调用即可
  • 若有多个模块的测试用例需要用到相同的 skip 或 skipif ,可以用一个单独的文件去管理这些通用标记,然后适用于整个测试用例集
    • 案例:把标记的单独写一个文件
      标记文件
      import pytest
      import sys
      
      # 不满足条件不执行
      markskipif = pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行")
      # 直接强制不执行
      markskip = pytest.mark.skip("本次不进行测试")
      测试用例
      from scripts.metting import markskip,markskipif
      
      @markskip
      def test_case1():
          print("执行第一个测试用例")
      @markskipif
      def test_case2():
          print("执行第二个测试用例")
      
      def test_case3():
          print("执行第三个测试用例")

      注:把标记单独放在一个文件中,测试用例中如果需要用到直接用装饰器的方式直接调用即可

posted @ 2023-04-13 16:55  A熙  阅读(75)  评论(0)    收藏  举报