Python包 - 是否包含测试套件

3
主要问题是:我是否应该在包内包含代码的测试套件?我指的不是测试框架或测试工具(如nosetests),而是每次运行以检查代码正确性的基本测试。
我一直在遵循setuptools教程,我有两个模块:nac(代码本身)和testssetup.py看起来像下面这样:
setup(
    ...
    packages = ['nac', 'tests'],
    ...
)

这就是如何安装到/usr/local/lib/python2.7/dist-packages/的过程:

dist-packages/
  nac/
  tests/

我相信我现在所拥有的不是最终解决方案,因为tests包引用了nac包 - 但你无法仅通过查看dist-packages目录来找出。我考虑创建一个大的nac模块,其中包含2个子模块:coretests。这是一个好的方法吗?是否有标准的Pythonic方式来解决这个问题?

1个回答

4
最好将测试用例放在主包下面,即 nac.tests。测试用例可以使用绝对导入来加载主要的 nac 包。
nac-project/
    nac/
        tests/
    setup.py

通过这种方式,您可以对nac包的本地版本或已部署版本运行测试用例。


我喜欢你的想法。但是,将测试包含在分发包中是否是一个好的方法? - ducin
@tkoomzaaskz,我相信这是PyPI上许多软件包中普遍采用的做法。关键是为了让最终用户在部署后能够验证软件包,特别是当软件包是通过第三方工具(例如pip或easy_install)部署的,并且最终用户无法直接访问源代码压缩包时。 - liuyu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接