【问题标题】:Why is Django-1.3 not finding my fixtures for a UnitTest?为什么 Django-1.3 找不到我的单元测试装置?
【发布时间】:2011-08-18 16:42:11
【问题描述】:

我正在尝试在 UnitTest 中使用我的固定装置。

AddFavoritesTestCase(unittest.TestCase):  

fixtures = ['/Users/Bryan/work/osqa/fixtures/fixture_questions.json']  

def setUp(self):  
    self.factory = RequestFactory()  

def testAdminCanFavorite(self):  
    user = User.objects.get(pk=3)   
    ...  
    self.assertEqual(response.status_code, 200)  


======================================================================  
ERROR: testAdminCanFavorite (forum.tests.tests_building_stickyness.AddFavoritesTestCase)  
----------------------------------------------------------------------  
Traceback (most recent call last):  
  File "/Users/Bryan/work/osqa/forum/tests/tests_building_stickyness.py", line 18, in testAdminCanFavorite  
    user = User.objects.get(pk=3) # Kallie has admin  
  File "/usr/local/lib/python2.7/site-packages/Django-1.3-py2.7.egg/django/db/models/manager.py", line 132, in get  
    return self.get_query_set().get(*args, **kwargs)  
  File "/Users/Bryan/work/osqa/forum/models/base.py", line 64, in get  
    obj = super(CachedQuerySet, self).get(*args, **kwargs)  
  File "/usr/local/lib/python2.7/site-packages/Django-1.3-py2.7.egg/django/db/models/query.py", line 349, in get  
    % self.model._meta.object_name)  
DoesNotExist: User matching query does not exist.  

似乎固定装置没有加载。

我已经能够使用固定装置来填充数据库,但由于某种原因在测试中找不到固定装置。

路径是正确的,但我不知道出了什么问题。

$ ls /Users/Bryan/work/osqa/fixtures/fixture_questions.json 
/Users/Bryan/work/osqa/fixtures/fixture_questions.json

以更高的详细程度运行测试表明未找到固定装置。 我正在运行 Django 1.3。

【问题讨论】:

  • 您的测试是否在您的应用程序的“tests.py”中?

标签: django unit-testing fixtures


【解决方案1】:

django.test导入TestCase;

  • 不是:import unittest
  • 不是:import django.utils.unittest
  • 但是:import django.test

像这样:

from django.test import TestCase

class test_something(TestCase):
    fixtures = ['one.json', 'two.json']
    ...

https://docs.djangoproject.com/en/1.3/topics/testing/#django.test.TestCase

【讨论】:

    【解决方案2】:

    您没有将完整路径传递给夹具,只传递夹具名称:

    fixtures = ['fixture_questions.json']  
    

    只要夹具位于 INSTALLED_APPS 中的应用程序内的 fixtures 目录中,Django 就会找到它。

    【讨论】:

    • 我将灯具移到了 app 目录中,但仍然找不到。我尝试在 setup() 中运行 pdb.set_trace(),但看不到灯具的加载位置。
    • 这和我的回答有什么关系?你试过我的建议了吗?
    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多