2009-10-04 75 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以及测试方法中的实际测试逻辑中。

希望这有助于