当前位置:   article > 正文

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

pytest多线程执行用例

一、运行时的参数

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

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

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

import pytest
import time


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

    def test_02_hujianoa(self):
        print('运行用例2')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
if __name__ == '__main__':
    pytest.main(['-vs', '-k=oa'])

  • 1
  • 2
  • 3

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

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

  • 1
  • 2
  • 3

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

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

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

pip install pytest-xdist
  • 1

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

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'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

运行时间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'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

运行指定模块用例

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

import pytest


if __name__ == '__main__':
    pytest.main(['-vs', 'test_login_02.py::TestLogin_01::test_01_hujian'])
  • 1
  • 2
  • 3
  • 4
  • 5

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

import pytest


if __name__ == '__main__':
    pytest.main(['-vs', '文件夹名称'])
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/649566
推荐阅读
相关标签
  

闽ICP备14008679号