2009-10-04 78 views
2

我想測試視圖如何在會話中存儲某些數據時的行爲。要做到這一點,我創建的測試方法的會議,並在視圖的最開始調用交互的shell:Django 1.0測試:如何讓測試代碼和正在測試的視圖之間保持一段會話?

測試方法:

def test_user_with_unused_tests(self): 
    "User is given a test and sent to test start" 
    # todo: insure that the user is given a test that he hasn't done 

    #login 
    login = self.client.login(username='xxx', password='xxx') 
    self.failUnless(login) 

    # build the screener 
    user = User(username='xxx', password='xxx') 
    user_screener = UserScreener(user=user) 

    # put the screener in session 
    self.client.session['user_screener'] = user_screener 

查看被測試:

@login_required 
def screener_start(request): 

    import code 
    code.interact(local=locals()) 

但顯然該會話不會持續在我的測試方法和視圖調用之間:

證據Nonpersistence的:

>>> request.session.values() 
[1, 'django.contrib.auth.backends.ModelBackend'] 

有什麼辦法解決這一問題?我錯過了一些重要的東西?

我正在使用Django 1.0。

非常感謝您的想法。

+0

有幾個相關的錯誤與變通針對此問題:https://code.djangoproject.com/ticket/15740和https://code.djangoproject.com/ticket/ 10899 – 2011-12-28 14:14:47

回答

0

看起來你需要一個setUp方法,請查詢http://docs.python.org/library/unittest.htmlsetUptearDown方法文件。 setUp將針對所有測試運行,每個測試運行結束時將銷燬每個單獨測試的代碼。

本質上,您需要將您的登錄邏輯放在setUp以及測試方法中的實際測試邏輯中。

希望這有助於