python模块 — 单元测试框架 pytest

 1、Pytest 介绍

Pytest是一个基于python的第三方单元测试框架。

要求:Python 3.7+ 或 PyPy3

特点:

  • Pytest 是免费和开源的,且入门简单,文档丰富
  • 主要用来做接口测试,也可以编写简单到复杂的功能测试
  • 编写测试用例方便,使用assert断言
  • 使用mark标记管理测试用例
  • 使用fixture夹具管理测试前置处理,后置处理
  • 支持参数化
  • 支持失败重试机制,部分执行,跳过执行,标记失败等
  • 支持生成html报告
  • 丰富的第三方插件,良好的自定义扩展性
  • 兼容其它测试框架,如unittest
  • 方便的和持续集成工具集成CI环境,如Jenkins

2、下载和安装

(1)安装pytest

pip install -U pytest

 pip安装不了的话可以登录Python第三方库PyPI官网下载pytest · PyPI

(2)查看pytest版本

pytest --version

也可以使用如下方式获取当前的 pytest 版本,结果是字符串:

>>> import pytest
>>> pytest.__version__
'7.0.0'

7.0 版中的新功能。

当前的 pytest 版本,作为一个元组:

>>> import pytest
>>> pytest.version_tuple
(7, 0, 0)

3、编写测试用例

新建test_sample.py文件如下,编写测试用例test_answer,使用assert断言。

# content of test_sample.py
def func(x):
    return x + 1


def test_answer():
    assert func(3) == 5

测试用例编写规范:

  • 测试用例包pakege必须要有__init__.py文件
  • 测试文件名必须以“test_”开头或者以”_test”结尾
  • 测试类命名以Test开头
  • 测试方法必须以“test_”开头
  • 使用assert断言

4、运行测试用例

打开test_sample.py所在的文件夹,选中文件路径输入cmd然后按enter键进入cmd窗口,输入命令:pytest。

python模块 — 单元测试框架 pytest_第1张图片说明: 

  • collected 1 item:pytest运行的时候一共收集到了1条测试用例。
  • test_sample.py F:标记为F是指测试结果是失败的。
  • [100%] :指运行所有测试用例的总体进度。
  • FAILURES:输出了详细的错误信息,帮助我们分析测试原因,我们可以看到"assert func(3) == 5"这条语句出错了,错误的原因是func(3)=4,然后我们断言func(3) 等于 5。

pytest运行的时候,默认会从当前目录及其子目录下所有以test_*.py或*_test.py文件中,收集所有以"test_"开头的测试函数。

测试用例运行结果标记符:

  • 点号,表示用例通过
  • F 表示失败 Failure
  • E 表示用例中存在异常 Error
  • S 表示用例被跳过 Skip
  • x 小写的 x 表示预期失败 xfail
  • X 大写的 X 表示预期失败,但是通过了

5、生成测试报告

使用pytest-html插件可以生成HTML格式的测试报告。

运行命令:pytest --html=report.html

python模块 — 单元测试框架 pytest_第2张图片

 打开测试报告:

python模块 — 单元测试框架 pytest_第3张图片

6、学习网站推荐

Pytest Tutorial

这是个印度佬创建的网站,不得不说这个教程对于初学pytest的人来说非常友好,基本上花个半天时间跟着教程练习一遍就能快速入门pytest的基本功能了。

Full pytest documentation — pytest documentation

这是Pytest官网教程,适合作为参考手册使用,如果你有你想深入了解那块功能都可以找到对应的API教程来学习。

Pytest权威教程(官方教程翻译) - 韩志超 - 博客园

这是大佬翻译的官网教程,建议作为官网教程的参考。

7、pytest合集

这篇文章只是pytest快速入门的简明教程,详细教程见pytest合集
 


reference:

Pytest Tutorial

Full pytest documentation — pytest documentation

Pytest权威教程(官方教程翻译) - 韩志超 - 博客园

你可能感兴趣的:(Python模块,python,pytest,测试框架,单元测试,自动化测试)