Django测试客户端/测试视图

时间:2016-08-11 09:20:31

标签: django

这是我在这里的第一篇文章。如果我不是这样做,请立即指导我。提前致谢。

根据教程(The Django test client),我编写了以下测试:

class HomePageTest(TestCase):
def test_home_page(self):
    response = self.client.get('/')
    print(response.status_code)

根据Django文档:

  

要解析URL,测试客户端将使用ROOT_URLCONF设置指向的任何URLconf。

我的urls.py:

# my_site/urls.py
urlpatterns = [
    url(r'', include('apps.home.urls',namespace='home')),
    url(r'^product/', include('apps.product.urls', namespace='product')),
    url(r'^order/', include('apps.order.urls', namespace='order')),
    url(r'^admin/', admin.site.urls, name='admin'),
]

# apps/home/urls.py
urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
]

我的views.py:

# apps/home/views.py
class IndexView(generic.TemplateView):
def get(self, request, *args, **kwargs):
    return render(self.request, 'base/index.html')

# apps/product/views.py
class ProductView(SessionWizardView):
template_name = 'product.html'

instance_dict = {
    'item': get_object_or_404(models.Product, name='Shifter'),
}

测试的预期结果是“200”运行:

test tests.HomePageTest --keepdb

然而我收到一个错误:

  

Http404:没有产品与给定的查询匹配。

发生的错误是因为我没有制作任何“Product”的虚拟实例。 我可以在“def setUp(self)”中这样做,但我发送的请求应该导致应用程序“home”。由于正则表达式不匹配,因此根本不应调用其他应用程序。

为什么甚至可能会调用app“Product”的视图?

提前致谢,Siggy

0 个答案:

没有答案