Pytest自动化测试框架常用参数
一、常用参数
1.指定执行文件/用例
不带参数,仅带文件名/文件相对路径/文件绝对路径
测试文件::测试类:执行指定类
测试文件::测试类::用例:执行指定用例
2.短命令选项
-v:输出详细信息
-q:简化输出信息
-k:根据关键字表达式执行
-x:失败则退出执行
-m 别名:只执行被标记的用例、
-s:输出调试信息,包括print打印信息
3.长命令选项
--durations=n:统计执行速度最慢的用例,值为0时,统计后由大到小排序
--maxfail=num:指定执行失败最大次数,超过则停止执行
--reruns n:失败用例重跑n次
--tb=no/line/short/long/native/auto:设置输出失败时打印的信息的显示
二、指定执行文件/用例
01指定文件执行
指定文件执行语法:pytest 文件名注:执行文件两种方式,进入文件所在的目录,或者带上文件的绝对或相对路径
# 已在test.py文件所在目录,指定执行test_1.py的文件 pytest test_1.py # 带上文件的相对路径 pytest /xxx/test_1.py #带上文件的绝对路径 pytest D:/xxx/test_1.py
02测试文件::测试类:执行指定类
测试文件::测试类:执行指定类
class TestClass:
def test_1(self):
assert 2 == 2
def test_2(self):
assert 3 == 3
pytest test_1.py::TestClass
03测试文件::测试类::用例:执行指定用例
测试文件::测试类::用例:执行指定用例
class TestClass:
def test_1(self):
assert 2 == 2
def test_2(self):
assert 3 == 3
pytest test_1.py::TestClass::test_2
三、短命令选项
01 -v
-v:输出详细的信息
class TestClass:
def test_1(self):
assert 1 == 2
def test_2(self):
assert 2 == 2
pytest -v
02-q
-q:与-v正好相反,简化输出信息
class TestClass:
def test_1(self):
assert 1 == 2
def test_2(self):
assert 2 == 2
pytest -q
03-k
-k:执行用例包含某个关键字
语法:pytest -k "类名/方法名/类名 and not 方法名"
备注:这里的类名和方法名可模糊匹配,包含该类名的关键字和方法名的关键字符合规则即可
class TestClass:
def test_1(self):
assert 1 == 2
def test_2(self):
assert 2 == 2
# 执行TestClass测试类下的所有方法
pytest -k "TestClass"
# 执行test_2测试用例
pytest -k "test_2"
# 匹配类名或方法名包含关键字“test”的用例执行
pytest -k "test"
# 执行TestClass测试类下的方法,除了test_1
pytest -k "TestClass and not test_2"
04-x
-x:失败则退出执行
执行t包含两个用例,执行test_1用例失败后退出,不再执行test_2用例
class TestClass:
def test_1(self):
assert 1 == 2
def test_2(self):
assert 2 == 2
pytest -x
05-m
-m 别名:只执行被标记的用例
import pytest
class TestClass:
def test_1(self):
assert 1 == 2
# 用例标记为“base”
@pytest.mark.base
def test_2(self):
assert 2 == 2
pytest -m base
备注:运行有告警信息,什么原因呢?
原因:主要是我们设置的标签没有注册,虽然可以运行,但是会报告警信息。
前面我们有说过pytes的执行规则,默认执行test_开头的用例,但是如果不想要根据默认的规则来执行,我们可以通过注册标签,并且在用例上打标签,然后再运行指定标签相关的用例执行。
解决方案:将标签通过pytest.ini的配置文件注册下即可,新建一个pytest.ini的文件,按以下的格式注册标签:
注意:pytest.ini 文件中只能用纯英文字符,不能使用中文,包括中文格式的冒号和空格
[pytest]
markers =
base:冒号后添加可选描述,这里的描述用英文描述,禁止使用中文描述
06-s
-s:表示输出调试信息,包括print打印信息
import pytest
class Test1:
def test_1(self):
assert 1 < 2
print("这是打印信息")
pytest -s
四、长命令选项
01--duration
--durations=n:统计执行速度最慢的n条用例,值为0时,显示所有用例的执行时间,统计后由大到小排序
class TestClass:
def test_1(self):
assert 1 == 2
def test_2(self):
assert 2 == 2
# duratons值为1时,统计执行速度最慢的1条用例
pytest --durations=1
02--maxfail
--maxfail=num:指定执行失败最大次数,超过则停止执行
class TestClass:
def test_1(self):
assert 1 == 2
def test_2(self):
assert 2 == 3
def test_3(self):
assert 3 == 4
pytest --maxfail=2
03--tb
--tb=no/line/short/long/native/auto:设置失败时打印的信息的显示方式
- --tb=no:不显示失败时的回溯信息,也就是没有FAILURES片段内容
- --tb=auto:默认值,仅打印第一个以及最后一个测试用例的回溯信息
- --tb=line:隐藏失败时其他的回溯信息,只显示用例执行失败的位置
- --tb=short:简化输出失败时的回溯信息,仅显示报错的代码,不显示非报错代码
- --tb=long:输出失败时更为详细的回溯信息
- --tb=native:只显示python标准库的回溯信息
import pytest
class Test:
def test_1(self):
assert 1 > 2
--tb=no:不显示失败时的回溯信息,也就是没有FAILURES片段内容
pytest --tb=no
--tb=auto:默认值,仅打印第一个以及最后一个测试用例的回溯信息
pytest --tb=auto
--tb=line:隐藏失败时其他的回溯信息,只显示用例执行失败的位置
pytest --tb=line
--tb=short:简化输出失败时的回溯信息,仅显示报错的代码,不显示非报错代码
pytest --tb=short
--tb=long:输出失败时更为详细的回溯信息
pytest --tb=long
--tb=native:只显示python标准库的回溯信息
pytest --tb=native

浙公网安备 33010602011771号