如何使用我的 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 中的错误?
如何将我的测试与我的包一起发布?我想让我的测试与 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 中的错误?