如何使用我的 python 包发布我的单元测试

How to publish my unit tests with my python package

如何将我的测试与我的包一起发布?我想让我的测试与 src 分开,如下所示。

mypackage/
    src/
        mypackage/
            __init__.py
            hello.py
    tests/
        test_hello.py

而我的setup.cfg内容是:

[metadata]
name = mypackage
version = 1.5.0
author = John Henckel
url = https://test.com
[options]
package_dir =
    = src
packages = find:
[options.packages.find]
where = src

但是当我这样做时 build + twine 测试不包括在内。有没有办法将测试包含在 tar 和 wheel 中?

当人们想要将它们与代码一起分发时,似乎人们将 tests/ 文件夹放在了模块目录中。

Related SO question.

你可以看到他们使用的项目结构here

编辑: This link 建议您只需列出 setup.py

中的目录
    packages=['an_example_pypi_project', 'tests'],

我找不到关于 setup.cfg 的任何信息,但我想它应该是一样的。

这不是一个真正的解决方案,但作为一个 hack,我决定将 tests 目录复制到 src/mypackage(暂时,就在构建之前)作为连续的一部分集成管道。我的构建管道脚本如下所示:

git clone https://.../mypackage
cd mypackage
pip install pytest -r requirements.txt
pytest
pip install build twine
cp -R tests src/mypackage
python -m build --wheel
twine upload ... dist/*.whl

这很好用。在此之后,我可以通过导航到包根目录(在 site-packages 下)和 运行ning pytest.

pip install mypackage 和 运行 测试

pytest documentation 说我也应该可以做到 pytest --pyargs mypackage。但这是行不通的。我不知道为什么。 pytest 中的错误?