2017-10-13 60 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()) 
相關問題