gpt4 book ai didi

Pytest中skip skipif跳过用例详解

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Pytest中skip skipif跳过用例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言

  • pytest.mark.skip可以标记无法在某些平台上运行的测试功能,
  • 或者您希望失败的测试功能希望满足某些条件才执行某些测试用例,否则pytest会跳过运行该测试用例
  • 实际常见场景:跳过非windows平台上的仅windows测试,或者跳过依赖于当前不可用的外部资源(例如数据库)的测试

@pytest.mark.skip

跳过执行测试用例,有可选参数reason:跳过的原因,会在执行结果中打印 。

?
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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"" "
__title__  =
__time__   = 2020/4/9 13:49
__author__ = 小菠萝测试笔记
__blog__   = https: //www.cnblogs.com/poloyy/
"" "
import pytest
 
 
@pytest.fixture(autouse= true )
def login():
     print( "====登录====" )
 
 
def test_case01():
     print( "我是测试用例11111" )
 
 
@pytest.mark.skip(reason= "不执行该用例!!因为没写好!!" )
def test_case02():
     print( "我是测试用例22222" )
 
 
class test1:
 
     def test_1(self):
         print( "%% 我是类测试用例1111 %%" )
 
     @pytest.mark.skip(reason= "不想执行" )
     def test_2(self):
         print( "%% 我是类测试用例2222 %%" )
 
 
@pytest.mark.skip(reason= "类也可以跳过不执行" )
class testskip:
     def test_1(self):
         print( "%% 不会执行 %%" )

执行结果 。

Pytest中skip skipif跳过用例详解

知识点 。

  • @pytest.mark.skip可以加在函数上,类上,类方法上
  • 如果加在类上面,类里面的所有测试用例都不会执行
  • 以上小案例都是针对:整个测试用例方法跳过执行,如果想在测试用例执行期间跳过不继续往下执行呢?

pytest.skip()函数基础使用

作用:在测试用例执行期间强制跳过不再执行剩余内容 。

类似:在python的循环里面,满足某些条件则break 跳出循环 。

?
1
2
3
4
5
6
7
def test_function():
     n = 1
     while true :
         print(f "这是我第{n}条用例" )
         n += 1
         if n == 5:
             pytest.skip( "我跑五次了不跑了" )

执行结果 。

Pytest中skip skipif跳过用例详解

pytest.skip(msg="",allow_module_level=false)

当allow_module_level=true时,可以设置在模块级别跳过整个模块 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"" "
__title__  =
__time__   = 2020/4/9 13:49
__author__ = 小菠萝测试笔记
__blog__   = https: //www.cnblogs.com/poloyy/
"" "
import sys
import pytest
 
if sys.platform.startswith( "win" ):
     pytest.skip( "skipping windows-only tests" , allow_module_level= true )
 
 
@pytest.fixture(autouse= true )
def login():
     print( "====登录====" )
 
 
def test_case01():
     print( "我是测试用例11111" )

执行结果 。

collecting ... skipped: skipping windows-only tests collected 0 items / 1 skipped ============================= 1 skipped in 0.15s ============================== 。

@pytest.mark.skipif(condition, reason="")

作用:希望有条件地跳过某些测试用例 。

注意:condition需要返回true才会跳过 。

?
1
2
3
4
@pytest.mark.skipif(sys.platform == 'win32' , reason= "does not run on windows" )
class testskipif(object):
     def test_function(self):
         print( "不能在window上运行" )

执行结果 。

collecting ... collected 1 item 07skip_sipif.py::testskipif::test_function skipped                       [100%] skipped: does not run on windows ============================= 1 skipped in 0.04s ============================== 。

跳过标记

  • 可以将pytest.mark.skip和pytest.mark.skipif赋值给一个标记变量
  • 在不同模块之间共享这个标记变量
  • 若有多个模块的测试用例需要用到相同的skip或skipif,可以用一个单独的文件去管理这些通用标记,然后适用于整个测试用例集
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 标记
skipmark = pytest.mark.skip(reason= "不能在window上运行=====" )
skipifmark = pytest.mark.skipif(sys.platform == 'win32' , reason= "不能在window上运行啦啦啦=====" )
 
 
@skipmark
class testskip_mark(object):
 
     @skipifmark
     def test_function(self):
         print( "测试标记" )
 
     def test_def(self):
         print( "测试标记" )
 
 
@skipmark
def test_skip():
     print( "测试标记" )

执行结果 。

collecting ... collected 3 items 07skip_sipif.py::testskip_mark::test_function skipped                    [ 33%] skipped: 不能在window上运行啦啦啦===== 07skip_sipif.py::testskip_mark::test_def skipped                         [ 66%] skipped: 不能在window上运行===== 07skip_sipif.py::test_skip skipped                                       [100%] skipped: 不能在window上运行===== ============================= 3 skipped in 0.04s ============================== 。

pytest.importorskip( modname: str, minversion: optional[str] = none, reason: optional[str] = none )

作用:如果缺少某些导入,则跳过模块中的所有测试 。

参数列表 。

  • modname:模块名
  • minversion:版本号
  • reasone:跳过原因,默认不给也行
?
1
2
3
4
5
6
pexpect = pytest.importorskip( "pexpect" , minversion= "0.3" )
 
 
@pexpect
def test_import():
     print( "test" )

执行结果一:如果找不到module 。

skipped: could not import 'pexpect': no module named 'pexpect' collected 0 items / 1 skipped 。

执行结果一:如果版本对应不上 。

skipped: module 'sys' has __version__ none, required is: '0.3' collected 0 items / 1 skipped 。

到此这篇关于pytest中skip skipif跳过用例详解的文章就介绍到这了,更多相关skip skipif跳过用例内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://www.cnblogs.com/poloyy/p/12666682.html 。

最后此篇关于Pytest中skip skipif跳过用例详解的文章就讲到这里了,如果你想了解更多关于Pytest中skip skipif跳过用例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com