1.运行参数
1.1 输出基本信息的参数
-s:输出调试信息,包括用例中的print打印信息
-v:输出比-s更详细的信息,会输出类名、方法名
-vs:-v和-s的组合
1.2 分布式运行
-n:支持多线程或者分布式运行测试用例
pytest -vs ./testcase/test_login.py -n 3
或
pytest.main(['-vs', './testcase/test_login.py', '-n=3'])
表示开启两个线程来运行测试用例
1.3 失败用例重跑
pytest -vs ./testcase/test_login.py --reruns 2
或
pytest.main(['-vs', './testcase/test_login.py', '--reruns=2'])
表示失败用例重跑2次,意思失败的用例总共跑3次
1.4 用例停止的条件参数
-x:只要有一个用例报错,那么测试停止
--maxfail:表示出现指定个数的用例失败就停止
1.5 执行指定特定条件的测试用例
-k:根据测试用例的部分字符串指定测试用例
pytest.main(['-vs', './testcase/test_login.py', '-k=li'])
只允许名字包含li的用例
1.6 html报告
--html ./report/report.html 生成HTML的测试报告
2. pytest用例执行顺序
默认从上到向执行
测试用例前加上装饰器@pyest.mark.run()可以改变执行顺序
@pyest.mark.run(order=1)
代表当前用例第一个被执行,通过这里的数字可以调整用例的执行顺序
class TestInterface:
def test_interface_01(self):
print('第一个接口测试用例')
@pytest.mark.run(order=1)
def test_interface_02(self):
print('第二个接口测试用例')
def test_interface_03(self):
print('第三个接口测试用例')
代表当前用例test_interface_02首先被执行,通过这里的数字可以调整用例的执行顺序
该用法依赖于pytest-ordering插件
3. 用例的标签选择性执行
3.1 分组执行(按照用例等级(冒烟、集成、回归),用例类别(UI、接口),模块,作者等特征进行分组)
这里配置文件需要事先配置好分组信息
此时配置文件如下:
[pytest]
addopts = -vs --html ./report/report.html
testpaths = '../pytest_project'
python_files = test*.py
python_classes = Test*
python_functions = test
markers =
smoke:冒烟用例
usermange:用户管理模块
productmange:商品管理模块
其中的部分用例如下:
class TestLogin(object):
def test_01_baili(self):
print('测试百里1')
@pytest.mark.smoke
def test_02_baili(self):
print('测试百里2')
@pytest.mark.usermanage
def test_03_yap(self):
print('测试百里3')
pytest -vs -m "smoke"
表示执行带有smoke标签的用例
pytest -vs -m "smoke or usermanage"
表示执行带有smoke标签或者usermanage的用例
3.2 跳过部分测试用例
3.2.1无条件跳过
class TestLogin(object):
@pytest.mark.skip(reason='异常')
def test_04_login(self):
print('测试百里4')
assert 1 == 2
3.2.2 有条件跳过
class TestProduct(object):
age = 19
@pytest.mark.skipif(age>=18, reason='已成年')
def test_01_product(self):
time.sleep(3)
print('测试商品')