将应用程序测试发布为Python模块

时间:2015-10-08 20:02:29

标签: python module package setuptools setup.py

我想对可以导入的模块进行测试,但是将它们保存在src文件夹之外,同时与应用程序模块共享命名空间(类似{{ 1}})甚至可能吗?我是不是太复杂了?

目录结构:

my-module.test.unit

setup.py

root/
    src/
        my-module/
    test/
        end-to-end/
        unit/
            helper.py
            test_foo.py
    setup.py

我认为可能的选择:

  • Python's Namespace Packages
  • 更改setup.py:

    setup(
        # ...
        'packages'=['my-module'],
        'package_dir'={'': 'src'}
        # ...
    )
    
  • setup( # ... 'packages'=['my-module', 'my-module.test.unit'], 'package_dir'={ 'my-module': 'src', # doesn't work in editable mode 'my-module.test.unit': 'test/unit' } # ... ) 文件夹
  • 中创建另一个setup.py

基本原理是我在与测试相同的文件夹中有一些辅助模块(例如test),并且使用绝对导入(例如test/unit/helper.py)导入它们。这个设置没有什么不妥,因为它有效,但假设一个新的内置模块可能会影响我的任何一个因为它们优先。我相信相对进口更好,因为没有留下任何解释空间(from helper import Helper)。 AFAIK,如果我的测试本身是一个包,我可以使用相对导入(例如explicit is better than implicit)来使用这些模块。

最后,它更多地是一个良好的实践和正确性问题,而不是一个真正的问题,因为from .helper import Helper也适用;)

参考文献:

0 个答案:

没有答案