Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未找到Django包测试_Python_Django_Unit Testing - Fatal编程技术网

Python 未找到Django包测试

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

我手头有个奇怪的问题

我正在创建一个django包,并希望为它提供一些测试用例

该包名为ajax_forms,完整路径是PYTHONPATH的一部分。 此目录还包含一个tests目录(带有\uuuu init\uuu.py文件)、一个tests.py文件(包含测试)和一个url.py文件

现在我想运行测试

ajax\u forms父目录中有一个在已安装的应用程序中使用ajax\u表单的示例项目设置

但我似乎不能让测试运行:

 >> ./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中!