【问题标题】:How to initialize the session on the base of web.py in test code?如何在测试代码中基于 web.py 初始化会话?
【发布时间】:2013-08-21 07:49:46
【问题描述】:

在学习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")

【问题讨论】:

    标签: session testing web.py


    【解决方案1】:

    知乎(知乎的中文版)我得到了一个解决方案。

    只需从 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")
    

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 2014-01-11
      • 2010-09-24
      • 1970-01-01
      相关资源
      最近更新 更多