使用站点fram的Django单元测试

2024-05-08 07:01:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试过用sites框架运行unittest。 这是测试功能:

def test_main(self):
  response = self.client.get('/')
  self.assertEqual(response.status_code, 200)

命令是:

^{pr2}$

但是我有一个错误,因为测试函数不知道我要测试哪个站点。--settings不起作用。在

我该怎么说我想要测试SITE_ID=1

错误:

======================================================================
enter code here`ERROR: test_main (sport.tests.SimpleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/django/test/utils.py", line 216, in inner
    return test_func(*args, **kwargs)
  File "/home/torm/BookingSystem/sport/tests.py", line 12, in test_main
    response = self.client.get('/')
  File "/usr/lib/python2.7/site-packages/django/test/client.py", line 470, in get
    **extra)
  File "/usr/lib/python2.7/site-packages/django/test/client.py", line 286, in get
    return self.generic('GET', path, secure=secure, **r)
  File "/usr/lib/python2.7/site-packages/django/test/client.py", line 358, in generic
    return self.request(**r)
  File "/usr/lib/python2.7/site-packages/django/test/client.py", line 440, in request
    six.reraise(*exc_info)
  File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 130, in get_response
    % (callback.__module__, view_name))
ValueError: The view system.views.main_page didn't return an HttpResponse object. It returned None instead

主要功能:

def main_page(request):
    site = get_current_site(request)

    if site.name == 'sport':
        return sport.views.main_page(request)

Tags: djangoinpytestselfclientgetreturn
2条回答

我找到了解决办法。在

我并没有更改测试数据库中站点的名称。在

def setUp(self):
    site = Site.objects.get(id=1)
    site.name = 'sport'
    site.save()

当我将这段代码添加到测试类中时,一切正常。在

您的settings_01.py是否在/project文件夹中?请告诉我们错误的痕迹。在

您可以通过args指定要测试的项目或应用程序。在

示例:

python2.7 manage.py test myproject.myapp  settings="myproject.settings_01"

相关问题 更多 >

    热门问题