pytest测试框架所需文件以及各自位置

在使用 pytest 进行测试时,正确组织项目结构和测试文件可以显著提高项目的可维护性和测试代码的可读性。以下是一个常见的项目结构,以及各文件的作用和位置建议:

项目结构

project_root/
|-- src/
|   |-- your_module.py             # 生产代码
|-- tests/
|   |-- test_your_module.py     # 测试文件
|   |-- conftest.py                     # 配置及共享夹具
|-- setup.py                            # 项目配置(如果是一个可打包的项目)
|-- requirements.txt                # 项目的依赖管理

关键文件和作用

  1. 生产代码 (your_module.py):

    • 放置在 src/ 目录中或其他适当的来源目录。
    • 包含实际的应用逻辑或库代码。
    • 为每个模块编写独立的测试。
  2. 测试目录 (tests/):

    • 专门用于存放测试代码。
    • 可以按照与生产代码类似的目录结构分类整理测试文件。
    • pytest 会自动在此目录中寻找测试文件。
  3. 测试文件 (test_your_module.py):

    • 存放针对生产模块 your_module.py 的测试用例。
    • 常用的命名格式是 test_*.py,使得 pytest 可以自动识别。
    • 每个文件内的测试函数以 test_ 开头,利于自动发现测试函数。
  4. conftest.py 文件:

    • 用于定义共享的配置和夹具。
    • 可以设置整个目录或子目录范围有效的设置。
    • 可以定义广泛适用的夹具、钩子及不是某个特定测试文件独有的辅助软件。
    • 关于每个目录 (tests/) 都可以有自己的 conftest.py 来管理该目录内的测试。
  5. setup.py 文件:

    • 项目包配置文件(如果项目需要打包)。
    • 定义项目的安装要求、入口点等打包配置。
    • 使用 setuptools 提供项目依赖和安装管理。
  6. requirements.txt 文件:

    • 列出项目所需的所有第三方库和其版本号。
    • 方便使用 pip 命令安装依赖:
      pip install -r requirements.txt

运行测试

在项目的根目录下,使用以下命令运行所有测试:

pytest

此命令会自动搜寻 tests/ 目录中的所有测试文件并执行其中的测试函数。它还能从 conftest.py 中加载相关的夹具和配置。

总结

通过整洁的项目结构和标准命名惯例,你能够更方便地运用 pytest 来自动发现和运行测试,同时这些结构有助于项目的长期维护和对新成员的理解。共享的夹具和钩子配置,以及明确的测试文件位置和作用分配,将赋予测试代码更好的扩展性和可读性。

你可能感兴趣的:(pytest)