Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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_Testing - Fatal编程技术网

Python 如何测试放置在子文件夹中的django应用程序?

Python 如何测试放置在子文件夹中的django应用程序?,python,django,unit-testing,testing,Python,Django,Unit Testing,Testing,我在测试分组在子文件夹中的django应用程序时遇到问题 好吧,让我解释一下情况 Standart django项目结构如下所示: django_project/ --appname1 --appname2 --appname3 --lib --tests --docs settings.py etc... django_project/ --apps/ ----appname1 ----appname2 ----appname3 --lib --tests --docs settings.

我在测试分组在子文件夹中的django应用程序时遇到问题

好吧,让我解释一下情况

Standart django项目结构如下所示:

django_project/
--appname1
--appname2
--appname3
--lib
--tests
--docs
settings.py 
etc...
django_project/
--apps/
----appname1
----appname2
----appname3
--lib
--tests
--docs
settings.py 
etc...
当项目结构为standart时,您只需在项目目录中键入命令即可为appname1运行测试:

python2 manage.py test appname1`
我们决定将所有应用程序放在子文件夹中,因此我们的项目结构如下所示:

django_project/
--appname1
--appname2
--appname3
--lib
--tests
--docs
settings.py 
etc...
django_project/
--apps/
----appname1
----appname2
----appname3
--lib
--tests
--docs
settings.py 
etc...
一切正常,但我们无法对应用程序运行测试。 我尝试过以下命令,但没有成功:

python2 manage.py test appname1
python2 manage.py test apps/appname1
python2 manage.py test apps.appname1
对于放置在子文件夹中的应用,是否有任何方法可以使用manage.py运行测试,或者我们应该编写自己的命令来运行它们

UPD:

我们有以下错误:

 Traceback (most recent call last):
  File "manage.py", line 18, in <module>
    management.execute_manager(settings)
  File "/opt/python266/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/opt/python266/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/opt/python266/lib/python2.6/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/opt/python266/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute
    output = self.handle(*args, **options)
  File "/opt/python266/lib/python2.6/site-packages/django/core/management/commands/test.py", line 37, in handle
    failures = test_runner.run_tests(test_labels)
  File "/opt/python266/lib/python2.6/site-packages/django/test/simple.py", line 312, in run_tests
    suite = self.build_suite(test_labels, extra_tests)
  File "/opt/python266/lib/python2.6/site-packages/django/test/simple.py", line 244, in build_suite
    app = get_app(label)
  File "/opt/python266/lib/python2.6/site-packages/django/db/models/loading.py", line 140, in get_app
    raise ImproperlyConfigured("App with label %s could not be found" % app_label)
django.core.exceptions.ImproperlyConfigured: App with label appname1 could not be found

确保
应用程序
具有
\uuuu init\uuuu.py
。您应该能够按应用程序名称运行测试:

python2 manage.py test appname1

这在Django 1.3下工作,我还没有测试过任何其他版本。

您遇到了什么错误?您在
settings.py
中的
已安装的应用程序下有什么

如果你有

INSTALLED_APPS = (
    'django.contrib.auth',
    ...
    'apps.appname1',
    'apps.appname2',
)

apps
目录中的
\uuuu init\uuuu.py
,那么它应该可以工作

回答这个问题有点晚了,但为了将来参考其他peep遇到的问题,我遇到了相同的问题,发现我需要向应用程序添加一个空的
models.py
文件。(它不需要任何数据库表,但没有
models.py
意味着测试运行人员没有拾取它。)

您需要应用程序文件夹下的这两个文件:

__init__.py
models.py

它们可以是空的

请注意,settings.py文件包含一个元组,因此在django 2.2.4中,终止字符应为“'not'}”

,使用测试文件文件夹,即
\test
,而不是默认的
test.py
文件。这就是我的工作

python manage.py test .\apps-folder\app1

如果您也在使用测试文件文件夹,请确保包含
\uuuu init\uuuu.py

我已向问题添加了详细信息。