章节目录:
- 一、概述
- 二、使用自定义标记
- 三、注册自定义标记
- 3.1 创建文件
- 3.2 修改文本编码格式
- 四、执行测试
- 五、结束语
一、概述
- 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 maclinux: marks tests as linuxwindows : 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 =====
五、结束语
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。