我正在测试我的 Flask 应用程序。
总之,这是我的问题:
1) 我在下面的代码块中的最终 url 断言失败。根据 Twill 的说法,它失败了,因为实际的 url 是'/auth/login'。换句话说,用户没有被重定向到受保护的管理页面。为什么?
2) 如何在我的 url 断言中包含“/?next='admin'”请求参数?换句话说,有没有一种方法——通过斜纹或任何 Pythonic 手段——来测试正确解析的“下一个”参数?
3)在功能测试中,除了断言 301 状态代码之外,还有其他方法可以显示重定向工作吗?
这是我的脚本中与斜纹相关的部分......
t.browser.go(t.url("/auth/login/?next=%2Fadmin%2F"))
url("/auth/login/?next=%2Fadmin%2F")
这是结果回溯:
TwillAssertionError: 当前 url 是 'http://127.0.0.1:5000/auth/login/?next=%2Fadmin%2F'; 不匹配 '/auth/login/?next=%2Fadmin%2F'
注意:奇怪的是,在“go”命令之后断言 200 状态代码不会返回任何类型的错误。我想表明,在登录上述 URL 后,最终 URL 确实是管理页面。像这样...
我想运行的测试没有失败,但不能......
def test_redirect_via_url(self):
使用 Twill(self.app, port=8080) 作为 t:
#: 登录前进入管理页面...
t.browser.go(t.url("/admin"))
#: 断言 admin url 重定向到登录 url
url('/auth/login')
#: 上面的断言有效,但是......
#: 为什么我不能断言这个 URL..'next' 参数...?
#: "/auth/login/?next=%2Fadmin%2F"
#:这就是浏览器地址栏中实际出现的内容
#: 无论如何,在'/auth/login' url,让我们登录
fv("1", "用户名", "测试")
fv("1", "密码", "welcome1")
提交()
#: 现在我想展示我的应用实际上重定向到受保护的管理页面...
#: 应该有一个 localhost/admin 的 URL
网址('/管理员')
#: 上面的 url 断言失败。提交后的实际 url 仍然是 '/auth/login'