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