一、运行时的参数
在上一篇博客中写了pytest最为核心的运行时前后置如何设置,细心的朋友可能也会发现其实我们当时就加过运行时的参数-vs。
pytest.main([‘-s’]):能打印出调试信息,print()或者日志都可以直接打印在控制台上。
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', '文件夹名称'])