以下内容纯属个人理解,如有不足,还请指正,转载请注明出处,喜欢请动动小指头点赞评论哦(▽)!
pytest 命令运行语法
pytest --help
常用case相关参数说明
参数 | 完整命令 | 说明 | 使用场景 |
---|---|---|---|
–collect-only | pytest --collect-only | 收集目录下所有的用例 | 测试运行之前,检查选中的用例是否符合预期 |
-k | pytest -k “删选条件” | 模糊筛选指定的case | 希望只运行特定的用例 |
-m | pytest -m “标记名称” | 标记测试并分组,以便快速选中并运行 | 与@pytest.mark.标签,配合使用,只会运行有定定标记的用例 |
-x | pytest -x | 遇到错误即停止整个测试,下面的case不会运行 | debug时常用 |
–maxfail=num | pytest --maxfail=2 | 明确指定失败几次后停止整个测试 | 批量运行时,错误超过预期次数时,停止运行脚本 |
–lf(–last-failed) | pytest --lf | 脚本运行失败后,仅重试失败的用例 | 只运行失败的用例,其它状态的用例不会运行 |
–ff(–failed-first) | pytest --ff | 与–lf相似,先运行失败用例,其它用例也会运行 | 脚本希望从失败用例开始运行 |
详细举例说明
case文件为:
#cd code/ch1/test_two.py
import pytest
def test_a():
assert (1, 2, 3) == (1, 2, 3)
def test_failing():
assert (1, 2, 3) == (3, 2, 1)
def test_failing2():
assert (1, 2, 3) == (3, 2, 1)
def test_b():
assert (1, 2, 3) == (1, 2, 3)
@pytest.mark.smoke1
def test_c():
assert (1, 2, 3) == (1, 2, 3)
@pytest.mark.smoke2
def test_d():
assert (1, 2, 3) == (1, 2, 3)
1、–collect–only:收集目录下所有的用例
pytest -–collect-only
2、-k:模糊筛选指定的case,只要匹配到了就,就收集运行
pytest -k "a or b"
从运行结果可以看出,-k是会按条件模糊查找case名称中的信息,只要匹配到了就,就收集运行
3、-m:运行带用指定标记的用例,常于@pytest.mark结合使用
pytest -m “smoke1 or smork2” test_two.py
注:上图的mark警告信息是由于,mark标记 smoke1等不是fixture自带的标记,为自定义标记,所以报错,解决办法将在@pytest.mark内详细说明
4、-x:遇到失败停止运行脚本
pytest -x test_two.py
上图可以看出,遇到停卡,其它几条用例就不再运行
5、–maxfail=num:达到num错误次数再停卡整个case,此参数与-x类似,都是遇错误终止
pytest --maxfail=2 test_two.py
6、–lf(–last-failed):运行最后一次失败用例,且只运行失败的case(前提是已经运行过的用例有失败的一次运行,-x我们已经有过一次失败了)
pytest -lf test_two.py
7、–ff(–failed-first):同lf相似,但–ff是所有的case都会运行,只是优先运行上次失败的case,再运行其它状态的case
pytest -lf test_two.py