2017-10-13 34 views
0

我正在测试 - 并且我在干净的方法中使用了一小块逻辑。使用用户对象在Django中测试表格

我的测试是这样的:

class DependentFormTest(TestCase): 

    def test_dependent_form_birthdate_out_of_range(self): 
     form_data = { 
      'first_name': 'Bill', 
      'last_name': 'Robusin', 
      'birth_date': '10/12/1801', 
      'gender': 'Male', 
      'relationship': 'dependent', 
      'street_address_1': '123 Any lane', 
      'city': 'Billson', 
      'state': 'WA', 
      'zip': '50133', 
     } 
     form = DependentForm(data=form_data) 
     self.assertFalse(form.is_valid()) 

在我的清洁方法有一点,我访问有关当前用户的一些信息。失败的片段看起来是这样的:

user_benefit = Benefit.objects.get(user=self.user) 

这条线是什么原因导致我的测试,下面的错误错误:

Benefit matching query does not exist

这是真的,因为在测试中“用户”是'没有'。

如何在我的测试中设置用户以便我可以测试此表单的有效性?

回答

1

在您的测试中setUp()方法您可以创建一个用户用于测试目的。然后重用它。

据我了解你的用户来自请求。因此,您需要使用django测试客户端登录并将数据发布到您的表单中。

0

如果用户不是形式初始化过程中明确设置您不能访问用户在表单中的clean方法(在这里看到:django: how to access current request user in ModelForm?

如果形式在初始化过程中通过用户在构造函数中,也可以在你的测试中做到这一点。

user = User.objects.first() # probably you should think about a better way to obtain a user instance 
form = DependentForm(data=form_data, user=user) 
self.assertFalse(form.is_valid()) 
相关问题