2014-05-17 41 views
1

安裝拆卸登錄註銷要測試輪詢應用程序,我使用Django做的先決條件,表決/ viewing_results是用戶應該可以登錄了。我想創建一個測試套件安裝在什麼地方涉及到創建testuser,登錄和拆卸涉及註銷用戶和刪除用戶。正確的方式在Django

我遇到了setUp()和tearDown()方法 - 但知道它們是針對測試中的每種方法完成的。我想在課堂上有這個功能,並且看到django具有setUpClass和tearDownClass - 但是因爲它們是類方法,所以我無法對它們執行self.client.login,self.client.logout。然後我創建了一個具有setUp和tearDown方法的LoginMixin。

我想知道這兩種方法哪一種更pythonic,是否有更好的選擇,而不是在每次測試之前登錄和註銷?

  1. 已經安裝,拆卸方法:

     
    def setUp(self): 
        self.user = utils.create_user() 
        self.client.login(username='testuser', password='testpasswd') 
    
    def tearDown(self): 
        self.client.logout() 
        utils.delete_user(self.user) 
    
  2. 有一個LoginMixin,讓每個測試類從它派生:

     
    class LoginMixin(): 
    
        def setUp(self): 
        self.user = create_user() 
        self.client.login(username='testuser', password='testpasswd') 
    
        def tearDown(self): 
        self.client.logout() 
    
    class MyTest(LoginMixin, TestCase): 
        .... 
        .... 
    

我使用django_nose作爲TestRunner的。

+0

什麼應用程序/模塊你用來測試? WebTest的? –

+0

使用django_nose作爲Testrunner - 測試已經使用通常的django單元測試編寫,如此處所述 - https://docs.djangoproject.com/en/dev/topics/testing/overview/ –

+0

好吧,像在TestCase中一樣文檔。創建一個名爲「Something(TestCase)」的類。然後,爲這個類創建'setUp'和'tearDown'(每次調用'Something'類中的函數時都會調用它們,然後創建您需要的函數測試(名稱必須以'test _....'開頭。當然,setUp和tearDown將會執行登錄/註銷 –

回答

0

如果你不使用setUpClass類方法的唯一原因是因爲你沒有訪問默認客戶端,你可以只創建自己的並且是指:

from django.test.client import Client 

class LoginMixin(): 
    client = Client() 
    # ...