一起养成写作习惯!这是我参与「掘金日新计划 · 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 标记名
我们看一下运行结果:
我运行的标记是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 未知的一个标记。
如上,为了消除告警,我们需要在 pytest 的配置文件中注册 mark 标记。这个需要我们在项目的根目录创建一个文件,文件名称pytest.ini。这个文件就是pytest之后的配置文件。
怎么使用,是大家的疑问,也是我的疑问。如上截图。但是在使用的时候,一定要注意。
1.冒号前面是标记名称,后面是标记的描述,描述可以为空。
2.ini文字中,不能有一切的中文标记。
3.ini文件中,没有注释,也不能有注释。
规范使用标记
当前注册完之后,就不会报错了,但是,我们很容易写错标记名称,在执行case的时候,pytest找不到case,但是debug还很难找到。这个时候,我们可以使用addopts = --strict 参数来严格规范标记的使用。当我们使用了未注册的标记时,pytest就会直接报错。大家可以操作一下哈。