前言
上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息。那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用例或者批量运行用例呢?下面将为大家一一解答!
pytest收集用例原理分析
首先我们按照如下目录结构新建我们的项目
[pyttest搜索测试用例的规则] |[测试用例目录1] | |__init__.py | |test_测试模块1.py | |test_测试模块2.py |[测试用<div style="color:transparent">本文来源gaodai.ma#com搞##代!^码@网*</div>例目录2] | |__init__.py | |test_测试用例1.py | |测试用例.py |test_测试模块.py |测试用例2.py
代码实例
# test_测试模块1.py def test_testFunc1(): print('\n我是一个测试用例! in test_testFunc1') assert 1 == 1 def func1(): print('我不是一个测试用例') assert 1 == 1 # test_测试模块2.py class TestClass1(object): def test_class_func1(self): print('\n 我是一个类里面的测试用例 in test_class_func1') assert 1 == 1 def class_func1(self): print('我是类里面的一个普通函数!') # test_测试用例1.py class TestClass2(object): def test_class_func2(self): print('\n 我是一个类里面的测试用例 in test_class_func2',) assert 1 == 1 def class_func2(self): print('我是类里面的一个普通函数!') def test_testFunc2(): print('\n我是一个测试用例 in test_testFunc2!') assert 1 == 1 def func2(): print('我不是一个测试用例') assert 1 == 1 # 测试用例.py def test_testFunc3(): print('\n我是一个测试用例! in 测试用例.py') assert 1 == 1 def func3(): print('我不是一个测试用例') assert 1 == 1 # test_测试模块3.py def test_testFunc4(): print('\n我是一个测试用例! in test_testFunc4') assert 1 == 1 def func4(): print('我不是一个测试用例') assert 1 == 1 class TestClass3(object): def test_class_func3(self): print('\n 我是一个类里面的测试用例 in test_class_func3') assert 1 == 1 def class_func3(self): print('我是类里面的一个普通函数!') # 测试用例2.py def test_testFunc5(): print('\n我是一个测试用例! in test_testFunc5') assert 1 == 1 def func5(): print('我不是一个测试用例') assert 1 == 1
下面我们使用cmd命令来执行一下这个项目,看一下究竟会有多少条用例是有效的用例?打开cmd 切换到项目的根目录执行命令 pytest -v
D:\pytest搜索测试用例规则>pytest -v ============================= test session starts ============================= platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe cachedir: .pytest_cache metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'} rootdir: D:\pytest搜索测试用例规则, inifile: plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10 collected 6 items test_测试模块3.py::test_testFunc4 PASSED [ 16%] test_测试模块3.py::TestClass3::test_class_func3 PASSED [ 33%] 测试用例目录1/test_测试模块1.py::test_testFunc1 PASSED [ 50%] 测试用例目录1/test_测试模块2.py::TestClass1::test_class_func1 PASSED [ 66%] 测试用例目录2/test_测试用例1.py::TestClass2::test_class_func2 PASSED [ 83%] 测试用例目录2/test_测试用例1.py::test_testFunc2 PASSED [100%] ========================== 6 passed in 0.59 seconds ===========================