pytest-split 开源项目教程
1. 项目的目录结构及介绍
pytest-split/
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs/
│ ├── conf.py
│ ├── index.rst
│ └── make.bat
├── pytest_split/
│ ├── __init__.py
│ ├── cli.py
│ ├── plugin.py
│ └── strategy.py
├── setup.cfg
├── setup.py
└── tests/
├── __init__.py
├── conftest.py
├── test_cli.py
├── test_plugin.py
└── test_strategy.py
- CHANGELOG.md: 记录项目的变更历史。
- CONTRIBUTING.md: 指导如何为项目贡献代码。
- LICENSE: 项目的开源许可证。
- README.md: 项目的主介绍文档。
- docs/: 项目的文档目录,包含 Sphinx 文档配置和源文件。
- pytest_split/: 项目的主要代码目录,包含插件的核心逻辑。
- setup.cfg: 项目的配置文件,用于打包和分发。
- setup.py: 用于安装和分发项目的脚本。
- tests/: 项目的测试代码目录,包含各种测试用例。
2. 项目的启动文件介绍
项目的启动文件是 pytest_split/cli.py
,它定义了命令行接口(CLI),允许用户通过命令行运行 pytest-split。
# pytest_split/cli.py
import click
from pytest_split import plugin
@click.command()
@click.option('--group-size', type=int, required=True, help='Number of tests in each group')
@click.option('--total-groups', type=int, required=True, help='Total number of groups')
@click.option('--group-id', type=int, required=True, help='ID of the group to run')
def main(group_size, total_groups, group_id):
plugin.run(group_size, total_groups, group_id)
if __name__ == '__main__':
main()
3. 项目的配置文件介绍
项目的配置文件是 setup.cfg
,它包含了项目的元数据和配置信息,用于打包和分发。
[metadata]
name = pytest-split
version = attr: pytest_split.__version__
description = Split pytest suites into separate runs
long_description = file: README.md
long_description_content_type = text/markdown
url = https://github.com/jerry-git/pytest-split
author = Jerry Pussinen
author_email = jerry.pussinen@gmail.com
license = MIT
classifiers =
Development Status :: 5 - Production/Stable
Intended Audience :: Developers
License :: OSI Approved :: MIT License
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
[options]
packages = find:
install_requires =
pytest>=6.0
click>=7.0
[options.entry_points]
pytest11 =
pytest_split = pytest_split.plugin
- metadata: 包含项目的名称、版本、描述、作者等信息。
- options: 指定需要打包的包和依赖项。
- options.entry_points: 定义 pytest 插件的入口点。