gpt4 book ai didi

python - Flask 应用程序的功能测试 : Weird Twill Traceback

转载 作者:行者123 更新时间:2023-11-30 23:39:24 24 4
gpt4 key购买 nike

我正在测试我的 Flask 应用程序。

总之,这是我的问题:

1) 下面代码块中我的最终 url 断言失败。根据 Twill 的说法,它失败是因为实际的 url 是“/auth/login”。换句话说,用户没有被重定向到 protected 管理页面。为什么?

2) 如何在我的 url 断言中包含“/?next='admin'”请求参数?换句话说,有没有办法通过 Twill 或任何 Pythonic 方法来测试正确解析的“下一个”参数?

3) 在功能测试中,除了断言 301 状态代码之外,还有其他方法可以显示重定向的工作原理吗?

这是我脚本中与斜纹布相关的部分...

   t.browser.go(t.url("/auth/login/?next=%2Fadmin%2F"))   url("/auth/login/?next=%2Fadmin%2F")

这是最终的回溯:

   TwillAssertionError: current url is 'http://127.0.0.1:5000/auth/login/?next=%2Fadmin%2F';does not match '/auth/login/?next=%2Fadmin%2F'

注意:奇怪的是,在“go”命令之后断言 200 状态代码不会返回任何类型的错误。我想表明,登录上述 URL 后,最终的 URL 实际上是管理页面。就像这样...

我希望运行的测试不会失败,但不能...

def test_redirect_via_url(self):                with Twill(self.app, port=8080) as t:            #: go to admin page before logging in...            t.browser.go(t.url("/admin"))            #: assert admin url redirected to login url            url('/auth/login')            #: The above assertion works, but...            #: why can't I assert this URL..a 'next' argument...?            #: "/auth/login/?next=%2Fadmin%2F"            #: that's what actually appears in the browser's address bar            #: In any regard, at the '/auth/login' url, let's login            fv("1", "username", "test")            fv("1", "password", "welcome1")            submit()            #: Now I want to show my app actually redirects to the protected admin page...            #: which should have a URL of localhost/admin            url('/admin')            #: The above url assertion fails.  The actual url after submit is still '/auth/login'

最佳答案

原因是 twill.commands.url 通过将其转换为正则表达式并进行匹配来断言所传递的 URL 与浏览器的 URL 相匹配。这会导致 /auth/login/?next=%2Fadmin%2F 被转换为:

/auth/login       # Match this literal string
/? # followed by zero or one slash
next=%2Fadmin%2F # followed by this literal string

这意味着它将匹配 /auth/login/next=%2Fadmin%2F/auth/loginnext=%2Fadmin%2F 但不匹配 /auth/login/?next=%2Fadmin%2F。解决方法是转义问号(url(r"/auth/login/\?next=%2Fadmin%2F") 应该可以)。

关于python - Flask 应用程序的功能测试 : Weird Twill Traceback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13574519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com