2013-08-21 81 views
0

學習LearnPythonTheHardway的練習52時,我需要編寫用於web.py服務器的自動測試。 在app.py,我只是把功能:如何在測試代碼中基於web.py初始化會話?

app = web.application(urls, globals()) 
if web.config.get('_session') is None: 
    store = web.session.DiskStore('sessions') 
    init = {'room': None, 'count': 100} 
    session = web.session.Session(app, store, initializer=init) 
    web.config._session = session 
else: 
    session = web.config._session 

class count: 
    def GET(self): 
     print 'session', session 
     session.count += 1 
     return session.count 

在app_test.py,我怎麼能初始化測試程序狀態的會話? 下面的代碼無法正常工作。該session.count不是51,我希望它是,但總是101

session.count = 50 
resp = app.request("/count") 
assert_equal(resp.data, "51") 

回答

0

從zhihu.com(Quora的的中國同行),我得到了一個解決方案。

只需從web.input()獲取值,即可在app.py中設置初始狀態。在app_test.py代碼中,使用request(「/ count?XX = XX」)來傳輸初始狀態以測試各種情況。

class count: 
    def GET(self): 
    initcount = web.input(i='') 
    if init != '': 
     session.count = int(initcount) 

    session.count += 1 
    return session.count 

,並在test.py:

resp = app.request("/initcount?i=50") 
assert_equal(resp.data, "51") 
相關問題