Django 1.6.1没有为Unittest加载装置

时间:2014-07-26 10:48:32

标签: python django unit-testing django-fixtures django-unittest

Django没有为以下测试加载灯具。

from django.test import TestCase

class DevViewsTests(TestCase):

    fixtures = ['device/fixtures/test_device.json']

    def setUp(self):
        self.client = Client()
        self.username = 'cws'
        self.email = 'alain.sturzenegger@gmail.com'
        self.password = 'cws123'
        self.test_user = User.objects.create_user(self.username, self.email, self.password)
        login = self.client.login(username=self.username, password=self.password)
        self.assertEqual(login, True)

    def test_device_list(self):

        url = reverse('device-overview')
        response = self.client.get(url)
        logger.debug('GET[%s]:[%s]', url, response.status_code)

        self.assertQuerysetEqual(response.context['device_list'], ['<device: Device Test 1>'])

这将指向以下视图但是从该视图中我无法检索device_list

def overview(request):
    device_list = device.objects.all()
    print "List of devices"
    print device_list # getting blank list []
    context = {'device_list': device_list}
    return render(request, 'device/index.html', context)

我的test_device.json文件如下

[
{
    "pk": 1, 
    "model": "device.device", 
    "fields": {
        "owner": 1, 
        "phone": "+41765687755", 
        "name": "Device Test 1", 
        "access_code": "1234"
    }
}
]

文件结构

cws
--device
--fixtures
----test_device.json

任何想法我做错了什么?请提供建议..

1 个答案:

答案 0 :(得分:1)

根据fixture loading documentation

  

一旦你创建了一个夹具并将它放在一个fixtures目录中   你的INSTALLED_APPS 之一,你可以在你的单元测试中使用它   在django.test.TestCase上指定fixtures类属性   亚类:

     

...

只需指定文件名,而不是项目目录的相对路径:

fixtures = ['test_device.json']