我一直在做一个项目,我有一个如下所示的目录系统:
tests/
corpus/
tests.py
monkey/
corpus/
corpus.py
setup.py
我的__init__.py
遍布这些目录。
问题在于,当我尝试运行corpus/tests.py
时,它会抱怨一行代码:import monkey.corpus as corpus
。
它(可以理解)在从根目录使用-m
开关运行或在根目录中有一个tests.py文件时有效。如果我想自动化多个测试,那么这两个(或可能是其他选项)中哪一个是最优选的?
答案 0 :(得分:1)
如果您使用的是setuptools
,则可以在setup.py中指定测试套件,然后使用python setup.py test
from setuptools import setup
setup(
...
test_suite='tests'
...)
另一种方法是从目录的根目录运行nosetests
包中的nose
。
注意对于我提到的两种方法,测试文件可能无法执行。
答案 1 :(得分:1)
我会将__init__
文件放在tests
和monkey
级别,并将其包含在sys.path
中。它显然更实用,因为每次调用它时都不必指定参数。
此外,如果其他人打算使用您的代码,显然他们不希望每次运行文件时都指定-m
参数:)
因此,在根目录的__init__
文件中:
root/
/tests
/monkey
__init__.py
希望这有帮助!