• pytest 之 skip跳过执行用例


    @pytest.mark.skip装饰器,用来标记用例,并跳过执行
    (注:不同于(标有pytest.mark.xfail)  xfail表示期望测试因某种原因而执行失败,然后跳过。比如功能未提测,或未修复的bug)

    skip跳过执行的几种方法:

    1、直接在用例上标记:    @pytest.mark.skip(reason="跳过执行这条case")        #reason是自定义的,可任意
    2、在class 类上标记:    @pytest.mark.skip(reason="跳过类,跳过类下的方法")
    3、需要满足条件才能跳过执行:@pytest.mark.skipif(条件1==1,reason='跳过原因')

    #第3点举例:skipif(条件1==1),而当前的类下有满足此条件,那么skip跳过运行这条

    import pytest,sys
    @pytest.mark.skipif (1==1,reason='会跳过Test类,也会跳过类中所有方法') 
    class Test(object):
      def test_one(self):
        assert 1==1
      def test_two(self):
        print('test_02')
        assert 1==2
    if __name__=='__main__':
      pytest.main(['-rs','test01.py'])
    

      

    4、满足多个skipif 条件的其中一个,就跳过执行:
    (意思就是,比如在类上有一个skip,在类下面的方法有一个skip,如果满足其中一个skip条件,都直接跳过执行)

    import pytest,sys
    @pytest.mark.skipif(1==1,reason='多个skip,有1个skip条件满足就跳过执行(这是类)') 
    class Test(object):
      def test_case1(self):
        assert 1==1
      @pytest.mark.skipif(2==2,reason='多个skip,有1个skip条件满足就跳过执行(这是方法)')   def test_case2(self):     print('test_02')     assert 2==2 if __name__=='__main__':   pytest.main(['-rs','test_demo.py'])

      

    5、如果想在多个测试方法上使用skip()装饰器,可以定义一个变量,就可通过导入模块的方式,在其他模块内直接调用

    import pytest,sys
    #定义一个变量,接收装饰器的值 myskip
    =pytest.mark.skipif(1==1,reason='skip赋值给变量,可多处调用')
    class Test(object):   @myskip   def test_case1(self):     assert 1==2   def test_case2(self):     print('test_02')     assert 1==1 if __name__=='__main__':   pytest.main(['-rs','test_demo.py'])

    6、pytest.skip()  指定写在方法内跳过

    在用例内调用pytest.skip()方法来实现跳过,可以选择传入msg参数来说明跳过原因;
    如果想要通过判断是否跳过,可以写在if判断里

    import pytest,sys
    class Test(object):
      def test_case1(self):
        pytest.skip(msg='跳过执行这条case')   #这是在方法内些的一个skip,那么在执行的时候,这个方法会被跳过执行
        assert 1==2
      def test_case2(self):
        print('test_02')
        assert 1==1
    if __name__=='__main__':   pytest.main(['-rs','test01.py'])

      

    注:运行时

    1、在文件内调试执行: if __name__ == "__main__":
                pytest.main('-rs','demo.py')        #使用"-rs",skip原因才会详细显示

    2、命令行执行:cmd运行看不到skip原因,可使用: -rs          使用命令:pytest -rs test_demo.py

  • 相关阅读:
    Python中常用的模块(sys模块)
    Python中常用的模块(OS模块)
    Python中常用的模块(time模块)
    Python中常用的模块(random模块)
    Python生成器详解
    Python装饰器详解
    python 两个list 求交集,并集,差集
    数据库中的视图索引
    数据库中的外键和主键理解
    mssql学习
  • 原文地址:https://www.cnblogs.com/QiKa/p/13235129.html
Copyright © 2020-2023  润新知