pytest框架运行时的参数,以及多线程分布式运行用例、运行指定模块用例

一、运行时的参数

在上一篇博客中写了pytest最为核心的运行时前后置如何设置,细心的朋友可能也会发现其实我们当时就加过运行时的参数-vs。
pytest.main([‘-s’]):能打印出调试信息,print()或者日志都可以直接打印在控制台上。
pytest框架运行时的参数,以及多线程分布式运行用例、运行指定模块用例_第1张图片
在这里插入图片描述
pytest.main([‘-v’]):能打印出运行用例时的详细信息。
我们日常在工作中呢一般都使用这两个参数,而这两个参数我们一般结合起来一起使用。

if __name__ == '__main__':
    pytest.main(['-vs'])

在这里还要说一下,一个参数那就是-k,只执行或者只不执行带有对应关键字的用例。
只执行带有关键字oa的用例:

import pytest
import time


class TestLogin_01:
    def test_01_hujian(self):
        print('运行用例1')

    def test_02_hujianoa(self):
        print('运行用例2')
if __name__ == '__main__':
    pytest.main(['-vs', '-k=oa'])

运行结果:
在这里插入图片描述
如果想只运行不带关键字oa的用例呢:

if __name__ == '__main__':
    pytest.main(['-vs', '-k not oa'])

运行结果:
在这里插入图片描述

二、多线程分布式运行用例

当我们存在多条用例时,而用例执行又没有前后关系,这时候就可以使用分布式运行用例的方法。
在使用该方法前需要先安装:

pip install pytest-xdist

我们在使用时不需要导入该模块。
这是我们正常运行用例时。

import pytest
import time


class TestLogin_01:
    def test_01_hujian(self):
        print('运行用例1')
        time.sleep(2)

    def test_02_hujian(self):
        print('运行用例2')
        time.sleep(2)


if __name__ == '__main__':
    pytest.main(['-sv', 'test_login_02.py'])

运行时间4s。
在这里插入图片描述
接下来我们加参数分布式运行用例,

import pytest
import time


class TestLogin_01:
    def test_01_hujian(self):
        print('运行用例1')
        time.sleep(2)

    def test_02_hujian(self):
        print('运行用例2')
        time.sleep(2)


if __name__ == '__main__':
    pytest.main(['-sv', 'test_login_02.py', '-n=2'])

两个线程运行跑用例可以看到运行时间是2s相对于上次缩减了一半。
在这里插入图片描述

运行指定模块用例

在我们一般自动化测试过程中,一般会有一个调用一个模块所有用例的入口方法,如果我们想只运行某个测试类或者测试用例该这么做呢:
只运行某个测试用例:
层级分别是py文件对应的类以及方法。

import pytest


if __name__ == '__main__':
    pytest.main(['-vs', 'test_login_02.py::TestLogin_01::test_01_hujian'])

我们还可以指定文件夹去运行用例:pytest会自动找对应文件下的用例文件,前提是命名规则要对哦。

import pytest


if __name__ == '__main__':
    pytest.main(['-vs', '文件夹名称'])

你可能感兴趣的:(pytest)