Pytest 不止可以运行自己的用例,也可以运行 unittest 写的用例。
Pytest 有很多运行时参数,用于指定运行的用例、运行结果展示、插件参数等。
Pytest 有两种运行方式:
- 命令行通过 Pytest 命令运行
pytest 参数 参数值 ...
- 代码中使用
pytest.main(['参数1=参数值1', '参数2=参数值2'])
你安装 pytest 之后就能直接使用 pytest 命令。如果你不能使用,请检查
Python安装目录/scripts
有没有 加入环境变量。
Pytest.main() 函数接收的参数是一个列表,而不是网上部分文章中写的是一个字符串。
比如,几个常用的参数,展示运行的写法:
-q
: 简化结果信息,不会显示每个用例的文件名等;-s
:允许在结果中显示标准输出,比如你在用例中的打印信息,默认在结果中不会显示标准输出;--capture=no
:与-s
效果一样,主要演示一下带参数值的写法;-m mark
:指定带相应标记的用例。用于演示不带等号的参数写法。
两种写法分别是:
pytest -s -q --capture=no -m smoke
或者
pytest.main(['-s', '-q', '--capture=no', '-m smoke'])
使用上一节写的用例运行一下,是不是用命令行会漂亮些?因为命令行中可以显示颜色效果。
运行后,我们可以看到有一些结果标记,如.
,F
等,和 unittest 一样,那分别代表什么意思?
.
点号,表示用例通过F
表示失败 FailureE
表示用例中存在异常 ErrorS
表示用例被跳过 Skipx
小写的 x 表示预期失败 xfailX
大写的 X 表示预期失败,但是通过了