美文网首页Pytest教程随读
Pytest官方教程-22-API参考-Marks

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

作者: 韩志超 | 来源:发表于2019-04-30 16:36 被阅读21次

    目录:

    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"}
    

    相关文章

      网友评论

        本文标题:Pytest官方教程-22-API参考-Marks

        本文链接:https://www.haomeiwen.com/subject/ilvvnqtx.html