Time will tell.
一、skip 介绍
在自动化测试过程中经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致一些用例执行不了,这时就可以用到跳过
1、
1 | ============================= 2 skipped in 0.04s ============================== |
2、
3、skip跳过,无条件和原因
4、skip跳过,无需满足条件
5、skip跳过,需满足条件
6、skip赋值变量,多处调用
然后
二、跳过测试类
-
被标记的类中所有方法测试用例都会被跳过。
-
被标记的类,当条件为ture时,会被跳过,否则不跳过。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | ''' skip跳过类 ''' import pytest,sys @pytest.mark.skip(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']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py ss [100%] =========================== short test summary info =========================== SKIPPED [2] test01.py: 跳过Test类,会跳过类中所有方法 ============================= 2 skipped in 0.07s ============================== Process finished with exit code 0 #skip满足条件,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']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py ss [100%] =========================== short test summary info =========================== SKIPPED [1] test01.py:415: 跳过Test类,会跳过类中所有方法 SKIPPED [1] test01.py:417: 跳过Test类,会跳过类中所有方法 ============================= 2 skipped in 0.04s ============================== Process finished with exit code 0 |
三、跳过方法或测试用例
想要某个方法或跳过某条用例,在方法上加以下3种都可以:
-
@pytest.mark.skip() #1、跳过方法或用例,未备注原因 -
@pytest.mark.skip (reason=‘跳过一个方法或一个测试用例’) #2、跳过方法或用例,备注了原因 -
@pytest.mark.skipif (1==1,reason=‘跳过一个方法或一个测试用例’) #3、当条件满足,跳过方法或用例,备注了原因
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | ''' 1、跳过方法或用例,未备注原因 ''' import pytest,sys class Test(object): @pytest.mark.skip() def test_one(self): assert 1==2 def test_two(self): print('test_02') assert 1==1 if __name__=='__main__': pytest.main(['-rs','test01.py']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py s. [100%] =========================== short test summary info =========================== SKIPPED [1] test01.py:414: unconditional skip ======================== 1 passed, 1 skipped in 0.04s ========================= Process finished with exit code 0 2、跳过方法或用例,备注了原因 import pytest,sys class Test(object): @pytest.mark.skip(reason='跳过一个方法或一个测试用例') def test_one(self): assert 1==2 def test_two(self): print('test_02') assert 1==1 if __name__=='__main__': pytest.main(['-rs','test01.py']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py s. [100%] =========================== short test summary info =========================== SKIPPED [1] test01.py:414: 跳过一个方法或一个测试用例 ======================== 1 passed, 1 skipped in 0.05s ========================= Process finished with exit code 0 3、当条件满足,跳过方法或用例,备注了原因 import pytest,sys class Test(object): @pytest.mark.skipif(1==1,reason='跳过一个方法或一个测试用例') def test_one(self): assert 1==2 def test_two(self): print('test_02') assert 1==1 if __name__=='__main__': pytest.main(['-rs','test01.py']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py s. [100%] =========================== short test summary info =========================== SKIPPED [1] test01.py:414: 跳过一个方法或一个测试用例 ======================== 1 passed, 1 skipped in 0.06s ========================= Process finished with exit code 0 |
四、多个 skip 时,满足1个条件即跳过
我们在类和方法上分别加了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import pytest,sys @pytest.mark.skipif(1==1,reason='多个条件时,有1个条件满足就跳过(类)') class Test(object): @pytest.mark.skipif(1==2, reason='多个条件时,有1个条件满足就跳过(方法)') def test_one(self): assert 1==2 def test_two(self): print('test_02') assert 1==1 if __name__=='__main__': pytest.main(['-rs','test01.py']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py ss [100%] =========================== short test summary info =========================== SKIPPED [1] test01.py:418: 多个条件时,有1个条件满足就跳过(类) SKIPPED [1] test01.py:415: 多个条件时,有1个条件满足就跳过(类) ============================= 2 skipped in 0.04s ============================== |
五、skip 赋值给变量,可多出调用
无论是
这种方法你还可以通过在其他模块中导入的变量的方式,在其他模块中共享标签。如果可以这样的话,那为什么不新建一个模块用来存放标签呢?这样是不是又方便了许多。
赋值:
调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import pytest,sys myskip=pytest.mark.skipif(1==1,reason='skip赋值给变量,可多处调用') class Test(object): @myskip def test_one(self): assert 1==2 def test_two(self): print('test_02') assert 1==1 if __name__=='__main__': pytest.main(['-rs','test01.py']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py s. [100%] =========================== short test summary info =========================== SKIPPED [1] test01.py:415: skip赋值给变量,可多处调用 ======================== 1 passed, 1 skipped in 0.07s ========================= Process finished with exit code 0 |
六、pytest.skip() 方法内跳过
除了通过使用标签的方式,还可以在测试用例中调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import pytest,sys class Test(object): def test_one(self): pytest.skip(msg='跳过') assert 1==2 def test_two(self): print('test_02') assert 1==1 if __name__=='__main__': pytest.main(['-rs','test01.py']) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py s. [100%] =========================== short test summary info =========================== SKIPPED [1] c:\users\wangli\pycharmprojects\test\test\test01.py:416: 跳过 ======================== 1 passed, 1 skipped in 0.04s ========================= Process finished with exit code 0 |
好了,以上就是今天分享的全部内容了,如果你对更多内容、及Python自动化软件测试、面试题、实例练习题感兴趣的话可以加入我们175317069一起学习。群里会有各项学习资源发放,更有行业深潜多年的技术人分析讲解。期待你的加入!
最后祝愿你能成为一名优秀的软件测试工程师!
欢迎【点赞】、【评论】、【关注】~
Time will tell.(时间会证明一切)