前言
自动化过程中由于用例比较多,我们可以通过模块进行划分。在执行过程中,想要根据用例的模块进行执行,如果按照以前的unittest的思想不同的模块写入不同的py文件中,但是pytest就不用了这样做了,pytest可以进行通过标记内容执行。这个在前面的参数化内容中,简单的介绍了
mark
mark属于pytest装饰器中的其中一个。可以用来进行标记用例。语法: pytest.mark.模块名
import pytest class Test01(): @pytest.mark.anjing def test_01(self): print('---用例01---,属于anjing模块下') @pytest.mark.test def test_02(self): print('---用例02---,属于test模块下') @pytest.mark.anjing def test_03(self): print('---用例03---,属于anjing模块下') if __name__ == '__main__': pytest.main(['-vs'])
这里我们先通过-m 加上标签名。然后进行执行。通过结果发现只执行了标记的anjing的模块
注意:这里需要提一个后面介绍的知识点。pytest.ini,我们需要将标记的内容放到mark中,不然的话就会报warning
通过not匹配模块
如果不想执行anjing模块,我们可以直接通过not进行排除, 执行除了anjing模块的全部模块
多个模块同时执行
如果想要同时执行标记的多个模块可以通过or进行匹配
import pytest class Test01(): @pytest.mark.anjing def test_01(self): print('---用例01---,属于anjing模块下') @pytest.mark.test def test_02(self): print('---用例02---,属于test模块下') @pytest.mark.anjing def test_03(self): print('---用例03---,属于anjing模块下') @pytest.mark.admin def test_04(self): print('---用例04---,属于login模块下') if __name__ == '__main__': pytest.main(['-m','anjing'])
模糊用例名称匹配
如果多个用例,我们想要执行特定名称,可以通过-k 加用例名,这里安静只执行用例2 和用例4。当然也可以通过