添加授权后,执行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 开放文档之源 计划 |