Python 未找到Django包测试
我手头有个奇怪的问题 我正在创建一个django包,并希望为它提供一些测试用例 该包名为ajax_forms,完整路径是PYTHONPATH的一部分。 此目录还包含一个tests目录(带有\uuuu init\uuu.py文件)、一个tests.py文件(包含测试)和一个url.py文件 现在我想运行测试 ajax\u forms父目录中有一个在已安装的应用程序中使用ajax\u表单的示例项目设置 但我似乎不能让测试运行:Python 未找到Django包测试,python,django,unit-testing,Python,Django,Unit Testing,我手头有个奇怪的问题 我正在创建一个django包,并希望为它提供一些测试用例 该包名为ajax_forms,完整路径是PYTHONPATH的一部分。 此目录还包含一个tests目录(带有\uuuu init\uuu.py文件)、一个tests.py文件(包含测试)和一个url.py文件 现在我想运行测试 ajax\u forms父目录中有一个在已安装的应用程序中使用ajax\u表单的示例项目设置 但我似乎不能让测试运行: >> ./manage.py test ajax_form
>> ./manage.py test ajax_forms
Creating test database for alias 'default'...
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Destroying test database for alias 'default'...
未找到任何测试,因此我尝试更具体:
>> ./manage.py test ajax_forms.tests
....
raise ValueError("Test label '%s' does not refer to a test" % label)
ValueError: Test label 'ajax_forms.tests' does not refer to a test
(ajax-validation)
甚至./manage.py ajax_forms.tests.tests.AjaxFormViewTest也找不到测试,并给出与上述相同的错误
但是尝试从./manage.py shell导入测试用例可以正常工作
In [2]: from ajax_forms.tests.tests import AjaxFormViewTest
我对这里发生的事情一无所知。您需要将tests import*中的
放入您的\uu init\uuuuuuuy.py
文件中
Django将在您的应用程序中查找名为tests的包/模块,然后查询其名称空间中的测试用例。在本例中,它将查看测试包的名称空间(从init.py文件),并在那里没有发现任何内容。通过在\uuuu init\uuuuuuy.py
文件中进行导入,您将把测试用例从您的测试模块导入到测试包的名称空间中,django将能够找到它们并运行它们。这个问题的另一个解决方案是使用更多的Intelligent tests runner。您可以尝试nose
和django_nose
——它将发现这种情况下的测试。如果您不想安装传统应用程序,@Ctrlspc solution是解决此问题的唯一方法。您可以在应用程序中添加一个models.py
文件,将新应用程序添加到已安装的应用程序中,django将找到tests.py文件,而无需向init\uuuuuuuuuuuuuuuuuuuuupy
添加任何内容
我猜@Ctrlspc方法和这个方法都有点脏。因此,任何选择都可以测试包中的文件真的被称为init.py
?不是\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。所以我认为这里没有问题。你又做了一次:)使用反勾(``)标记代码片段或文件名,那么它们就不会被破坏当然,如果你在tests目录中只有一个文件,拥有这个目录没有任何意义:只需将tests.py文件移动到上面的级别。我刚刚开始使用django nose,我也可以推荐这种方法,我喜欢这样一个事实,即您可以轻松地获得converge和其他nose产品,但要烘焙到django中!