pytest5-marks标记

135 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

感谢老铁的点赞和关注。我们继续学习pytest哈。

如何使用

在我们写了很多case之后,有些case我们想归类运行怎么搞,那我们今天就可以用到这个装饰器@pytest.mark.标记名称。我们可以用它标记方法,类,但是,我们写的这个标记名要有意义。看如下代码:

import pytest

@pytest.mark.add
class TestAdd:
    @pytest.mark.sum
    def test_sum(self):
        pass
 
    @pytest.mark.num
    def test_num(self):
        pass

@pytest.mark.verb
class TestVerb:
    @pytest.mark.sum
    def test_sum(self):
        pass
 
    @pytest.mark.num
    def test_num(self):
        pass

如上代码,我们可以在同一个类中,有很多标记,可以标记类,方法,当然,同一个类和方法也可以有多个标记。

运行命令是 python3 -m pytest -v -m 标记名 我们看一下运行结果:

image.png

我运行的标记是add和sum。如上也有正常运行结果。但是不知道为什么,下面出现warnings。咱也不懂,有懂的人,可以评论一下。

运行标记的case

看官方文档,有些如下的翻译,也跟咱们的运行命令差不多。
1.使用 -m 参数运行标记case
2.-m 支持 and、or、not表达式

pytest.main(['-m add'])
pytest.main(['-m verb'])
pytest.main(['-m sum'])
pytest.main(['-m num'])
pytest.main(['-m add and not verd'])
pytest.main(['-m add and not sum'])
pytest.main(['-m add or verb'])

注册标记

当我们使用 -m 参数执行标记的case时,pytest会发出告警信息 “PytestUnknownMarkWarning: Unknown pytest.mark.login - is this a typo? ”, 告诉你这是一个 pytest 未知的一个标记。

image.png

如上,为了消除告警,我们需要在 pytest 的配置文件中注册 mark 标记。这个需要我们在项目的根目录创建一个文件,文件名称pytest.ini。这个文件就是pytest之后的配置文件。

image.png

怎么使用,是大家的疑问,也是我的疑问。如上截图。但是在使用的时候,一定要注意。

1.冒号前面是标记名称,后面是标记的描述,描述可以为空。
2.ini文字中,不能有一切的中文标记。
3.ini文件中,没有注释,也不能有注释。

规范使用标记

当前注册完之后,就不会报错了,但是,我们很容易写错标记名称,在执行case的时候,pytest找不到case,但是debug还很难找到。这个时候,我们可以使用addopts = --strict 参数来严格规范标记的使用。当我们使用了未注册的标记时,pytest就会直接报错。大家可以操作一下哈。