pytest库

enjoyzier / 2023-07-19 / 原文

pytest官网文档地址:https//docs.pytest.org
安装pip3 install pytest

1.pytest基本使用

1.1 pytest默认测试用例规则

(1)模块名必须以test_开头或者_test结尾

(2)测试类必须以Test开头,并且不能有ini方法

(3)测试方法必须以test开头

1.2 pytest测试用例运行方式

1.2.1命令行运行

pytest [options] [file_or_dir] [file_or_dir] [...]

(1)测试搜索:pytest搜索测试文件和测试用例的过程称为测试搜索。只要遵守pytest的命名规则,pytest就能自动搜索所有待执行的测试用例。主要的命名规则:

测试文件应当命名为test_<someting>.py或者<someting)_test.py
测试函数、测试类方法应当命名为test_<something>
测试类应当命名为Test<something>
运行pytest时可以指定目录和文件。如果不指定,pytest会搜索当前目录及其子目录中以test_开头或以_test结尾的测试函数。
(2)常用命令行选项:

  • --collect-only 选项可以展示在给定的配置下哪些测试用例会被运行。
  • -k 选项允许你使用表达式指定希望运行的测试用例
  • -m 选项用于标记测试并分组,以便快速选中并运行。当需要同时运行一组测试用例时,我们可以预先使用@pytest.mark.标记名 这样的装饰器来做标记,以下例子使用标记名run_these标记分组,然后使用命令行pytest -v -m run_these,这样有相同标记run_these的测试用例便可以一起运行。
import pytest
@pytest.mark.run_these:
def test_case1():
    pass
@pytest.mark.run_these:
def test_case2():
    pass
View Code

    使用-m选项可以用表达式指定多个标记名。使用-m "mark1 and mark2"可以同时选中带有这两个标记的所有测试用例。使用-m "mark1 and not mark2"则会选中带有mark1的测试用例,而过滤掉带有mark2的测试用例。使用-m "mark1 or mark2"则选中带有mark1或者mark2的所有测试用例。

  • -x  开启此选项,一旦遇到测试失败,就会全局停止。
  • --maxfail=num 当出现num个测试用例失败就停止运行。
  • -s  表示输出调试信息,包括print打印信息。-s等价于--capture=no。信息捕获的方法还有--capture=fd和--capture=sys。使用--capture=sys时,sys.stdout/stderr将被输出至内存;使用--capture=fd时,若文件描述符(file descriptor)为1或2,这会被输出至临时文件中。
  • --if(--last-failed)  该选项定位到最后一个失败的测试用例重新运行。
  • --ff(failed-first)   该选项与--last-failed选择作用基本相同,不同的是-ff会运行完剩余的 测试用例。-v(--verbose) 输出的信息会更详细。最明显的区别就是文件中的每个测试用例都占一行,测试的名字和结果都会显示出来,而不仅仅是一个点或者字符。
  • -q 该选项的作用与-v/--verbose相反,它会简化输出信息。
  • -l(showlocals) 使用该选项,失败测试用例由于被堆栈追踪,局部变量及其值都会显示出来。
  • -tb=style 该选项决定捕捉到失败时输出信息的显示方式。style的常用类型有long、short、line、no。--tb=long输出最为详尽的回溯信息;--tb=short模式仅输出assert的一行以及系统判定内容(不显示上下文);--tb=line模式只使用一行输出显示所有的错误信息;--tb=no模式直接屏蔽全部回溯信息;--tb=auto是默认值,如果有多个测试用例失败,仅打印第一个和最后一个用例的回溯信息(格式与long模式的一致);-tb=native,只输出python标准库的回溯信息,不显示额外的信息。
  • --version 可以显示当前的pytest版本及安装目录-h(--help)展示原生pytest的用法,还能展示新加的插件的选项和用法。
  • -n 支持多线程或者分布式运行测试用例,需要先安装插件pytest-xdist方可使用。如:pytest -vs ./testcase/test_login.py -n 2
  • --reruns NUM  设置此项,失败用例重跑NUM次

使用举例:
运行所有:pytest
运行指定模块:pytest -vs test_login.py
运行指定目录:pytest -vs ./interface_testcase
运行指定测试用例:pytest -vs ./interface_testcase/test_interface.py::test_01_func

>>>未完待续