自定义标记

发布时间:2024年01月05日

一、概述

  • pytest 可以支持自定义标记,自定义标记可以把一个 web 项目划分多个模块,然后指定模块名称执行。
  • 譬如我可以标明哪些用例是 window 下执行的,哪些用例是 mac下执行的,在运行代码时候指定 mark 即可。

二、使用自定义标记

  • 代码示例
import pytest


# 自定义标记。
@pytest.mark.mac
def test_mac():
    print("=== mac ===")


@pytest.mark.linux
def test_linux():
    print("=== linux ===")


@pytest.mark.windows
def test_windows():
    print("=== windows ===")

  • 接下来,我们需要将上面自定义的 mac、linux、windows 标记注册到配置文件中。

三、注册自定义标记

pytest.ini 全局配置文件,是 pytest 单元测试框架的核心配置文件,它可以改变 pytest 的运行方式。

3.1 创建文件

  • 注意:pytest.ini 需要和运行的测试用例同一个目录,或在根目录下作用于全局。

  • 文件名为 pytest.ini,内容如下:

[pytest]
;注册 mark 标记
markers =
    mac : marks tests as mac
    linux: marks tests as linux
    windows : marks tests as windows

3.2 修改文本编码格式

pytest.ini 文件需要设置 GBK 格式。

  • 注意:如果编码格式不符合要求,运行 pytest 会报 UnicodeDecodeError: ‘gbk’ codec can’t decode byte 异常

  • 可以通过文本工具进行编码转换。

  • 也可以在 pycharm 中设置:

四、执行测试

可以有两种执行方式。

  • 方式一:程序执行
if __name__ == '__main__':
    # 如果传入参数没有生效,则说明:
    # 原因:程序识别到了 pytest 框架,默认 pytest 运行,要 main() 主函数运行,需要修改 python 解释器。
    # 解决:菜单栏 Run => Edit Configurations... => "+" => Python => 设置运行文件及工作目录。
    pytest.main(["-s", "-m=mac", "test_demo.py", ])
    # === mac ===
  • 方式二:命令行执行(下面都以命令行为例):
# 进入 cmd 终端。
  • 指定标记运行
# 命令。
pytest -s -m "mac" test_demo.py

# 结果。
=== mac ===
===== 1 passed, 2 deselected in 0.01s =====
  • 标记取反运行
# 命令。
pytest -s -m "not mac" test_demo.py

# 结果。
=== linux ===
=== windows ===
===== 2 passed, 1 deselected in 0.01s =====
  • 同时执行多个标记
# 命令。
pytest -s -m "mac or linux" test_demo.py

# 结果。
=== mac ===
=== linux ===
===== 2 passed, 1 deselected in 0.01s =====

五、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

文章来源:https://blog.csdn.net/weixin_48776531/article/details/135419150
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。