在打包python模块时我应该在哪里进行测试?

Ste*_*ger 19 python testing namespaces distribution

我有一个位于命名空间的模块.测试依赖的测试和数据应该放在命名空间中还是在setup.py站点的顶层?

./company/__init__.py
./company/namespace/__init__.py
./company/namespace/useful.py
./company/namespace/test_useful.py
./company/namespace/test_data/useful_data.xml
./setup.py
Run Code Online (Sandbox Code Playgroud)

要么

./company/__init__.py
./company/namespace/__init__.py
./company/namespace/useful.py
./test_useful.py
./test_data/useful_data.xml
./setup.py
Run Code Online (Sandbox Code Playgroud)

问题是否应该安装测试?

gue*_*tli 24

示例项目存储模块外部测试.

目录结构如下所示:

??? data
?   ??? data_file
??? MANIFEST.in
??? README.rst
??? sample
?   ??? __init__.py
?   ??? package_data.dat
??? setup.cfg
??? setup.py
??? tests
    ??? __init__.py
    ??? test_simple.py
Run Code Online (Sandbox Code Playgroud)

相关:包装指南:https://packaging.python.org/en/latest/

提示:不要遵循The Hitchhiker的包装指南.它自2010年以来一直没有更新!

  • 另请参阅https://www.jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/,它也将测试放在根项目目录中. (5认同)

hwi*_*ers 15

您应该根据The Hitchhiker的包装指南将测试模块放入它测试的模块中.

这是他们的例子:

TowelStuff/
    bin/
    CHANGES.txt
    docs/
    LICENSE.txt
    MANIFEST.in
    README.txt
    setup.py
    towelstuff/
        __init__.py
        location.py
        utils.py
        test/
            __init__.py
            test_location.py
            test_utils.py
Run Code Online (Sandbox Code Playgroud)

这样,您的模块将随其测试一起分发,用户可以使用它们来验证它是否适用于他们的设置.

请参阅http://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/creation.html.

  • 测试中的导入语句是什么? (3认同)
  • 您不应将子模块命名为 test 以避免与也命名为 test 的标准库模块混淆。 (2认同)
  • 自2010年以来,“包装旅行者指南”尚未更新。请使用此https://packaging.python.org/指南 (2认同)