2017-05-25 65 views
0

这是我的UserTestCase(APITestCase)类中的两个函数。资本变量是不变的。有没有什么方法可以测试API,而不是在test_create_user函数中创建过多的常量和类似“data”的数据? django中的初始数据测试的最佳做法是什么?django - 测试中的初始数据

def setUp(self): 
    self.client = APIClient() 
    # create staff 
    self.admin = User.objects.create_user(email=ADMIN, password=PASSWORD) 
    self.admin.is_staff = True 
    self.admin.is_active = True 
    self.admin.save() 

    self.user = User.objects.create_user(email=ADMIN, password=PASSWORD) 
    self.user.is_active = True 
    self.user.save() 

def test_create_user(self): 

    login = self.client.login(email=ADMIN, password=PASSWORD) 
    self.assertTrue(login) 

    data = { 
     'email': EMAIL, 
     'password': PASSWORD, 
     'first_name': FIRSTNAME, 
     'last_name': LASTNAME, 
     'nationality': NATIONALITY, 
     'is_active': True, 
    } 

    # configure urls 
    url = reverse('apiv2:user-list') 
    # url1 = reverse('apiv2:user-detail', args=[self.user.id]) 

    # create new user 
    user = self.client.post(url, data, format='json') 
    self.assertEqual(user.status_code, 201) 

    # login after create 
    login = self.client.login(email=string_normalize(
     self.data.email), 
     password=PASSWORD 
    ) 
    self.assertTrue(login) 

    self.client.logout() 
+0

你在找什么叫做“灯具”。在你正在使用的测试框架的文档中寻找这个词。 –

+0

我不需要真实数据库的转储数据。例如,我只需要一些字段,以便测试PUT API。 @HåkenLid – achilles

+0

是的。无论您是使用数据库转储还是在设置功能中创建它,它仍称为夹具数据。 –

回答

1

我建议使用一些模拟库如Model Mommy基于Django的模型声明轻松创建您的灯具。最有可能的是,您将在测试的setUp方法中加载初始数据。