Pytest 运行参数

2019-12-02  本文已影响0人  猫与测试

前面已经讲过如何运行测试用例,不管用哪种方式,都可以支持这些运行参数。

你可以通过-h--help查看所有的命令,包含了所有插件的:

pytest --version   # 显示 pytest 的版本
pytest -h | --help 

1. 查找用例

模块或目录

pytest 除了参数以外,在 pytest 后面没有跟任何参数的字符串都会认为是文件或者目录,会去这些指定的目录或文件中查找用例。

pytest tests test_login.py ../flow/test_flow.py

这里 pytest 会去查找当前目录下的 tests 子目录,当前目录下的test_login.py,上级目录下的 flow 目录中的 test_flow.py。会找到所有这些目录或文件中符合条件的测试用例。你可以使用下面的--collect-only来检验一下。

--collect-only

此参数展示当前 pytest 能找到的用例,也就是说直接根据当前参数配置,能找到的用例列表。用于检验运行的用例是否符合你的预期。

注意,这里只是列出会运行的用例,但是不会实际运行。

-k 筛选用例

-k可以让你使用表达式来指定希望运行的测试用例。可以用 andornot 连接符,模糊匹配文件名、类名和函数名。

pytest -k "str or Add and not list" --collect-only

匹配名称包含 str 或者 Add 且 不包含 list 的文件、类、及函数。如果用上面的例子,这里就只会找到两个函数:


注意这里有个坑,千万不要用单引号,一定要用双引号包裹表达式。

-m 标记

标记markers用于标记测试并分组,以便快速选中某些需要的用例并运行。比如我们在冒烟测试时运行其中某一部分用例,bvt 测试时运行另一部分用例。可以通过@pytest.mark.标记名来标记这些需要的用例,运行时用-m 标记就能快速选出这部分用例运行。

@pytest.mark.bvt  # => 给函数加上标记
def test_int():
    """测试整型"""
    a, b = 1, 2
    assert add(a, b) == 3

运行时:

pytest -m bvt

标记名可以自己随意加,但是加上后会有警告信息。可以使用 pytest 的配置文件配置这些标记。在测试目录下新建一个pytest.ini,这是一个文本文件,并加入如下内容。

[pytest]
markers=smoke:冒烟测试用例
  bvt: bvt 测试用例
  online: 正式环境运行的用例

关于配置文件pytest.ini后面开专门的文章来讲解

2. 控制运行过程

Pytest 自带的这些控制运行命令可能并不常用,而最常用的应该是由失败重试插件提供的遇到用例失败重试的命令。

失败重试需要插件 pip install pytest-rerunfailures

pytest --reruns=3  # 用例失败重新运行3次

以下是 pytest 自带的运行控制命令:

-x, --exitfirst 遇到失败停止

正常情况下,一个用例失败后,会继续运行后续用例 ,直到所有用例运行完为止。-x 参数会让整个测试在遇到第一次失败就停止。这取决于你有没有这样的需要,一般来说可能用不上。

--maxfail=num 遇到多少次失败就停止

与上面-x一样,不过-x是遇到第一次失败就停止。而--maxfail可以指定遇到几个测试用例失败就停止。

pytest --maxfail=3   # 遇到三次用例失败就停止

-lf, --last-failed

当一个或多个用例失败后,定位到最后一个失败的用例重新运行,后续用例会停止运行。

-ff, --failed-first

-lf查不多,失败后会定位最后一个失败的用例重新弄运行,但是会运行完剩余的用例。

3. 结果展示

-s, --capture=method显示标准输出

默认情况下你在用例中写的print或者log输出,都不会在测试结果中展示。如果你想看到用例中的标准输出,那么需要加上-s参数。

-v, --verbose更详细的结果

使用-v会让输出结果更详细,不用的时候一个文件占一行,而用例之后一个用例占结果的一行。并且结果中的用例名称和结果都会展示,而不仅仅是一个.或字符。

-q, --quiet简略的结果

-v相反,-q会输出更简化的信息。

-l, --showlocals显示变量

使用-l会展示运行过程中的全局变量和局部变量。

测试报告

默认情况下,pytest 只有 xml 格式的报告。通过--junit-xml=path可以输出 xml 格式的报告。结合 Jenkins 还是比较直观。

但是可能你需要更直观的 html 测试报告,那么需要使用插件pytest-html,你可以通过 pip install pytest-html安装 。

然后在命令中加上--html=path

pytest --html=report.html   # 在当前目录生成名为report.html的测试报告

其他还有很多参数,各位可使用 python --help 查询。这里只是提出一部分较为常用的,你把常用的用熟了再去看其他的也就容易懂了。

上一篇 下一篇

猜你喜欢

热点阅读