单元测试

代码总会存在各种问题。

测试是必须的,其他

PyTest 使用入门

安装

参考 Pip 安装 pytest

快速开始

  • 测试代码

写一个测试代码

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


def test_answer():
    assert inc(3) == 5
  • 执行测试

命令行执行

$   pytest test_sample.py

执行日志如下:

=========================================================================== test session starts ============================================================================ platform win32 -- Python 3.7.3, pytest-4.4.0, py-1.8.0, pluggy-0.9.0
rootdir: D:\python\10-test\pytest
collected 1 item

test_sample.py F                                                                                                                                                      [100%]

================================================================================= FAILURES ================================================================================= _______________________________________________________________________________ test_answer ________________________________________________________________________________

    def test_answer():
>       assert inc(3) == 5
E       assert 4 == 5
E        +  where 4 = inc(3)

test_sample.py:7: AssertionError
========================================================================= 1 failed in 0.06 seconds =========================================================================

测试多个测试用例

pytest 会执行所有的 test_*.py/*_test.py 对应的 python 文件。

执行当前文件夹及其子文件夹。

测试标准规则

pytest实现以下标准测试发现:

如果未指定参数,则从testpath(如果已配置)或当前目录开始收集。 或者,命令行参数可以用于目录,文件名或节点ID的任意组合。

递归到目录中,除非它们与norecursedirs匹配。

在这些目录中,搜索由其测试包名称导入的 test_*.py/*_test.py 文件。

从这些文件中收集测试项目:

在课堂外测试前缀测试函数或方法

在测试前缀测试类中测试前缀测试函数或方法(没有__init__方法)

有关如何自定义测试发现的示例更改标准(Python)测试发现。

在Python模块中,pytest还使用标准的unittest.TestCase子类化技术发现测试。

参考资料

  • 关键词

python unittest pytest

https://testandcode.com/2

  • unittest

Python必会的单元测试框架 —— unittest

说说Python中的单元测试

python接口测试学习(1)HTTP请求理论知识

Python中接口的实现实例