pytest是一个功能强大且易于使用的Python测试框架,它主要用于编写单元测试、集成测试和功能测试。

一、pytest的安装

  • 安装命令pip install pytest
  • 验证安装:使用pytest --version命令来查看已安装的pytest版本,如果终端显示一个版本号,则说明安装成功。

二、pytest的命名规范

  • 测试模块:测试文件应以”test_”开头或以”_test”结尾,例如test_login.pyuser_test.py
  • 测试类:测试类必须以Test开头命名,且测试类中不能有__init__方法。
  • 测试方法/测试函数:测试方法/测试函数必须以test开头。

三、pytest的常用运行参数

  • 无参数:读取路径下符合条件的所有类、函数、方法全部执行。
  • -v:打印详细运行日志。
  • -s:打印print输出。
  • -k:跳过运行某个或某些用例,如pytest -k '类名'pytest -k '方法名'
  • -x:运行用例失败立即停止运行。
  • –maxfail:用例失败数达到某个设定的值停止运行,如pytest --maxfail=[num]
  • -m:运行所有被@pytest.mark.[标记名]标记的用例。

四、pytest的fixture特性

  • 用途:fixture主要用来做初始化环境以及测试结束后的数据清除,可以代替setup和teardown。
  • 参数:
    • scope:控制fixture的作用范围,包括function(默认)、class、module、session。
    • params:一个可选的参数列表,列表中每个数据都可以作为用例的输入。
    • autouse:如果为True,则自动调用fixture功能;如果为False,则需要显式调用。
    • ids:每个字符串id的列表,对应于params中的参数,用于生成测试ID。
    • name:fixture的名称。

五、pytest的skip和xfail

  • skip:用于跳过测试用例,可以在函数内使用pytest.skip(),也可以在函数外使用@pytest.mark.skip()装饰器。
  • xfail:用于标记预期会失败的测试用例,使用@pytest.mark.xfail()装饰器。

六、pytest的参数化

  • 参数化:使用@pytest.mark.parametrize()装饰器来实现数据驱动测试。
  • 示例
1
2
3
4
5
import pytest  

@pytest.mark.parametrize('a,b,expect', [(1, 1, 2), (2, 3, 5)])
def test_add(a, b, expect):
assert a + b == expect

在这个例子中,test_add函数会分别用(1, 1, 2)和(2, 3, 5)这两组数据来执行测试。