gpt4 book ai didi

python - 包括用于测试但不用于分发的模块结构

转载 作者:行者123 更新时间:2023-12-01 01:51:24 25 4
gpt4 key购买 nike

考虑以下包结构

project   # Project root
package # Main package that one wants to distribute
... # Modules comprising the package
mockup # Mock up of a package structure used for testing
... # Modules comprising the mock up structure
tests # Testing package containing unittests
... # Modules comprising the unittests
setup.py # setup script

应该如何配置setup.py脚本来

  • 在分发过程中仅包含package的源代码,而不包含testsmockup文件夹
  • 在使用 tox 运行 tests 时还需包含 mockup 文件夹

目前我已指定以下内容;它将包代码与测试代码区分开来,但不会使模型在测试执行期间可用。

setup(
...
package = find_packages(exclude=['tests','mockup']), # Includes package code but not tests or mockup folders
test_suite ='tests', # Includes tests but not the mockup's
...
)

MANIFEST.in 中指定 mockup/** 将其包含在发行版中,就像指定 package_data/include_package_data 一样> 在 setup.py 中。也许 Tox 允许模型结构,但我在文档中没有找到这一点。

最佳答案

tox 通过运行 python setup.py sdist 为您构建一个与 setup.pyMANIFEST.in 中指定的包完全相同的包。没有办法构建一个特殊的包来测试 tox。这将违背 tox 的目的,即您要准确测试要发布的包。

如果您想使用不属于发布版本但属于项目一部分的文件/文件夹运行一些特殊测试(因此是您的 tox.ini 所在项目结构的一部分) > 生命)我建议针对项目的开发安装运行这些测试,其中包含您需要的所有内容。您仍然应该根据其他测试来测试该包,但这些其他测试可以在不同的毒理学环境中完成。

非常简单,在一个项目中,在 tests 下的不同文件夹中包含不同的测试类型,这可能看起来像这样(我是从 pytest 用户的角度写的 - 你必须翻译它进行单元测试 - 或者只是使用 pytest 运行单元测试:)):

[tox]
envlist = tests,mockuptests

[testenv:tests]
description = runs the "normal" tests against the installed package
deps = pytest
commands = pytest tests/normal

[testenv:mockuptests]
description = runs the "mockup" tests against an editable installation
usedevelop = True
deps = pytest
commands = pytest tests/mockup

再一想,我认为针对模型测试包也应该可以以不同的方式进行,而不必将这些文件放入包中,具体取决于您的测试的结构以及测试运行程序的工作方式。由于运行 unittest 并且我没有足够的有关您的项目设置的详细信息,我不知道在您的情况下您将如何执行此操作。

关于python - 包括用于测试但不用于分发的模块结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50685024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com