添加授权后,执行nosetests,会发现控制器的单元测试报错。 因为没有经过授权所有页面的输出都是“尚未授权”。实际上, 只要在每一个测试用例运行之前,访问 security控制器的login方法, 以实现登录,设置正确的session,则后续访问会自动带上cookie, 得到正确的授权页面。
在控制器的测试用例基类TestController中加上login方法,以简化登录调用:
class TestController(TestCase):
...
def login(self, username, password=""):
res = self.app.get(url_for(controller='security'))
form = res.forms[0]
form['username'] = username
if not password:
d = eval(config.get('test_users', {}))
password = d.get(username,'')
form['password'] = password
form.submit()
在测试用例中调用login方法:
self.login('root')
res = self.app.get(url_for(controller='check'))
assert res.status == 200
assert '''<input type="submit" name="submit" value='Check Permissions'>''' in res.body
assert res.c.reposlist == ['/', u'repos1', u'repos2', u'repos3', u'document']
Copyright © 2006 WorldHello 开放文档之源 计划 |