Pytest官方教程-22-API参考-Marks

目录:

  1. 安装及入门
  2. 使用和调用方法
  3. 原有TestSuite使用方法
  4. 断言的编写和报告
  5. Pytest fixtures:清晰 模块化 易扩展
  6. 使用Marks标记测试用例
  7. Monkeypatching/对模块和环境进行Mock
  8. 使用tmp目录和文件
  9. 捕获stdout及stderr输出
  10. 捕获警告信息
  11. 模块及测试文件中集成doctest测试
  12. skip及xfail: 处理不能成功的测试用例
  13. Fixture方法及测试用例的参数化
  14. 缓存: 使用跨执行状态
  15. unittest.TestCase支持
  16. 运行Nose用例
  17. 经典xUnit风格的setup/teardown
  18. 安装和使用插件
  19. 插件编写
  20. 编写钩子(hook)方法
  21. 运行日志
  22. API参考
    1. 方法(Functions)
    2. 标记(Marks)
    3. 钩子(Hooks)
    4. 装置(Fixtures)
    5. 对象(Objects)
    6. 特殊变量(Special Variables)
    7. 环境变量(Environment Variables)
    8. 配置选项(Configuration Options)
  23. 优质集成实践
  24. 片状测试
  25. Pytest导入机制及sys.path/PYTHONPATH
  26. 配置选项
  27. 示例及自定义技巧
  28. Bash自动补全设置

API参考-Marks

22-API参考-02-Marks

标记(Marks)

可以使用标记应用元数据来测试功能(但不是固定装置),然后可以通过装置或插件访问。

pytest.mark.filterwarnings

教程@ pytest.mark.filterwarnings
为标记的测试项添加警告过滤器。

pytest.mark.``filterwarnings过滤器

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | 过滤器str) -
一个警告规范字符串,由Python文档的“警告过滤器”部分中 指定的元组内容组成,由。分隔。可以省略可选字段。传递用于过滤的模块名称不是正则表达式转义。(action, message,category, module, lineno)":"
例如:

@pytest.mark.warnings("ignore:.*usage will be deprecated.*:DeprecationWarning")
def test_foo():
    ...

|

pytest.mark.parametrize

教程参数化夹具和测试功能

Metafunc.``parametrizeargnamesargvaluesindirect = Falseids = None,*scope = None *)[source]

使用给定argnames的argvalues列表向基础测试函数添加新调用。在收集阶段执行参数化。如果你需要设置昂贵的资源,请参阅设置间接,以便在测试设置时进行。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

  • argnames - 以逗号分隔的字符串,表示一个或多个参数名称,或参数字符串的列表/元组。
  • argvalues - argvalues列表确定使用不同参数值调用测试的频率。如果只指定了一个argname,则argvalues是值列表。如果指定了N个argnames,则argvalues必须是N元组的列表,其中每个tuple-element为其各自的argname指定一个值。
  • indirect - argnames或boolean的列表。参数列表名称(argnames的子集)。如果为True,则列表包含argnames中的所有名称。对应于此列表中的argname的每个argvalue将作为request.param传递到其各自的argname fixture函数,以便它可以在测试的设置阶段而不是在收集时执行更昂贵的设置。
  • ids - 字符串ID列表或可调用的列表。如果字符串,则每个字符串对应于argvalues,以便它们是测试ID的一部分。如果将None作为特定测试的id给出,则将使用该参数的自动生成的id。如果是可调用的,它应该采用一个参数(单个argvalue)并返回一个字符串或返回None。如果为None,将使用该参数的自动生成的id。如果没有提供id,它们将自动从argvalues生成。
  • 范围 - 如果指定,则表示参数的范围。范围用于按参数实例对测试进行分组。它还将覆盖任何fixture函数定义的范围,允许使用测试上下文或配置设置动态范围。
    |

pytest.mark.skip

教程跳过测试功能
无条件地跳过测试功能。

pytest.mark.``skip(**reason = None *)

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | reasonstr) - 跳过测试功能的原因。 |

pytest.mark.skipif

教程跳过测试功能
如果条件是,则跳过测试功能True

pytest.mark.``skipif条件,*原因=无

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

pytest.mark.usefixtures

教程使用类,模块或项目中的夹具
将测试功能标记为使用给定的夹具名称。
警告
应用于夹具功能时,该标记无效。

pytest.mark.``usefixtures(*名称

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | args - 要使用的fixture的名称,作为字符串 |

pytest.mark.xfail

教程XFail:将测试功能标记为预期失败
标记测试功能按预期失败

pytest.mark.``xfailcondition = Nonereason = Noneraises = Nonerun = Truestrict = False *)

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

  • conditionboolstr) - 将测试函数标记为xfail(True/False条件字符串)的 条件
  • reasonstr) - 测试函数标记为xfail的原因。
  • 引发异常) - 期望由测试函数引发的异常子类; 其他例外将无法通过测试。
  • runbool) - 如果实际应该执行测试功能。如果False,该函数将始终为xfail并且不会被执行(如果函数是segfaulting则很有用)。
  • 严格布尔) -
    • 如果False(默认值),该功能将在终端输出中显示,就xfailed好像它失败一样,就像xpass它通过一样。在这两种情况下,这都不会导致测试套件整体失败。这对于标记稍后要解决的片状测试(随机失败的测试)特别有用。
    • 如果True,该函数将在终端输出中显示为xfailed失败,但如果它意外通过则将使测试套件失败。这对于标记始终失败的函数特别有用,并且应该有明确的指示它们是否意外地开始通过(例如,库的新版本修复了已知错误)。
      |

自定义标记

标记是使用工厂对象动态创建的,pytest.mark并作为装饰器应用。
例如:

@pytest.mark.timeout(10, "slow", method="thread")
def test_function():
    ...

将创建并附加一个Mark对象到收集 Item,然后可以通过固定装置或钩子访问Node.iter_markers。该mark对象将具有以下属性:

mark.args == (10, "slow")
mark.kwargs == {"method": "thread"}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容