Django:如何在每个测试用例上运行数据迁移

时间:2015-02-26 16:59:04

标签: python django sqlite django-rest-framework

我对django rest framework进行了两个简单的单元测试。

第二次测试总是失败,因为数据库是空的。 我有一个数据迁移,它初始化我的数据,但它没有应用于第二次测试。

这是完整的代码。数据库sqlite。

# -*- coding: utf-8 -*-
import django
django.setup()
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
from rest_framework.test import APITestCase
from rest_framework import status
from django.core.urlresolvers import reverse
from . import models

class BaseTestCase(APITestCase):
    def setUp(self):
        self.username = 'user'
        self.user = User.objects.create(username=self.username, password=self.username)
        self.token = Token.objects.create(user=self.user)
        self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)

    def tearDown(self):
        self.token.delete()
        self.user.delete()

class GMTOffsetsTestCase(BaseTestCase):    
    def test_get_all_offsets(self):
        url = reverse('offset-list')
        response = self.client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        # We have 37 timezones
        self.assertEqual(len(response.data), 37)    

class TimezonesTestCase(BaseTestCase):   
    def test_create(self):
        gmt_offset = models.GMTOffset.objects.all().first()
        data = {'name': 'From Test', 'city': 'Saint Petersburg', 'offset': str(gmt_offset.id)}
        url = reverse('timezone-list')
        response = self.client.post(url, data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

django 1.7.4,python 3.4

这些测试可能出现什么问题?

我应该更改数据库引擎吗?

0 个答案:

没有答案