Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 CMS测试-can';找不到命名空间_Python_Django_Unit Testing_Django Urls_Django Cms - Fatal编程技术网

Python Django CMS测试-can';找不到命名空间

Python Django CMS测试-can';找不到命名空间,python,django,unit-testing,django-urls,django-cms,Python,Django,Unit Testing,Django Urls,Django Cms,我在Django CMS测试中遇到了一个非常奇怪的问题。当我运行:/manage.py test--settings=my_project.test_settings时,我得到了以下错误: 错误:测试\来宾\列表\视图 (apps.news.tests.test\u views.NewsListViewTest)测试来宾是否看不到 禁用条目 ----------------------------------------------------------------------回溯(最近一次调

我在Django CMS测试中遇到了一个非常奇怪的问题。当我运行:
/manage.py test--settings=my_project.test_settings
时,我得到了以下错误:

错误:测试\来宾\列表\视图 (apps.news.tests.test\u views.NewsListViewTest)测试来宾是否看不到 禁用条目 ----------------------------------------------------------------------回溯(最近一次调用上次):文件 “/home/robert/work/projects/my_project/apps/news/tests/test_views.py”, 第52行,在测试客户列表视图中 response=self.client.get(self.\u get\u list\u url())文件“/home/robert/work/projects/my\u project/apps/news/tests/test\u views.py”, 第17行,在“获取列表”url中 返回反向(“新闻:列表”)文件“/home/robert/.virtualenvs/my_project/local/lib/python2.7/site packages/django/core/urlresolvers.py”, 第532行,相反 键)NoReverseMatch:u'news'不是已注册的命名空间

但当我只为该应用程序运行测试时,一切正常-所有测试都通过。

到目前为止,这是我非常简单的测试类:

# -*- coding: utf-8 -*-
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
from django.test.utils import override_settings

from cms.test_utils.testcases import CMSTestCase

from apps.accounts.tests.factories import CustomUserFactory
from .factories import NewsFactory
from ..models import News


class BaseNewsTestCase(CMSTestCase):
    def _get_list_url(self):
        """Returns URL to objects list"""
        return reverse("news:list")

    def _create_data_structure(self):
        """Created test data"""
        # add objects
        self.disabled = NewsFactory(is_visible=False)
        self.enabled = NewsFactory()
        NewsFactory()
        NewsFactory()

        self.user = CustomUserFactory(username='user', password='user')

        # privileged_user
        self.privileged_user = CustomUserFactory(username='p_user',
                                                 password='p_user')

        # add permissions
        content_type = ContentType.objects.get_for_model(News)
        permissions_list = ('add_news', 'change_news', 'delete_news')
        permissions = Permission.objects.filter(content_type=content_type,
                                                codename__in=permissions_list)

        self.privileged_user.user_permissions.add(*permissions)


@override_settings(ROOT_URLCONF='apps.news.tests.urls')
class NewsListViewTest(BaseNewsTestCase):
    def test_guest_list_view(self):
        """Tests if guest can't see disabled entries"""
        self._create_data_structure()

        response = self.client.get(self._get_list_url())
        objects = response.context['object_list']

        self.assertEqual(len(objects), 3)
        for obj in objects:
            self.assertNotEqual(obj, self.disabled)
和测试URL:

# -*- coding: utf-8 -*-
from django.contrib import admin
from django.conf.urls import url, patterns, include

urlpatterns = patterns(
    '',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^news/', include('apps.news.urls', namespace='news')),
    url(r'', include('cms.urls')),
)
有什么线索可以导致这个问题吗?我遵循这一点,测试我的CMA apphook()

我在该项目的不同应用程序中有相同的测试模式,但它不会抛出该错误。

我找到了解决方案。 我没有使用
@override\u设置(ROOT\u URLCONF='myapp.tests.url')
作为我的测试用例,正如中所建议的那样,我使用了Django方法

因此,对于每个测试用例,我都会这样做,例如:

class NewsListViewTest(CMSTestCase):
    urls = 'apps.news.tests.urls'

我有点困惑。您正在测试apphook吗?如果是这样的话,你的url.py中不应该有任何关于该应用程序的信息,对吗?@mkoistinen看看这个:-这就是我所做的。在我的CMS中,该应用程序作为apphook,但在我的测试中,我将其作为普通应用程序进行测试,以检查其功能。问题是,当我运行所有测试时,我会出现该错误。当我仅为该特定应用程序运行测试时-它通过如果您使用的url(…app_name='news')而不是“namespace”失败,即使在该特定应用程序的测试中也会失败,该链接无效