pytest---mark标记用例

前言

  自动化过程中由于用例比较多,我们可以通过模块进行划分。在执行过程中,想要根据用例的模块进行执行,如果按照以前的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。当然也可以通过

原文地址:https://www.cnblogs.com/qican/p/14245989.html