如何在测试代码中基于web.py初始化会话?

时间:2013-08-21 07:49:47

标签: session testing web.py

在学习LearnPythonTheHardway的练习52时,我需要编写web.py服务器的自动化测试代码。 在app.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")

1 个答案:

答案 0 :(得分: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")