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

原文地址:https://www.cnblogs.com/QiKa/p/13235129.html