using unittest what is b?: self.assertTrue(b'Please login'
本问题已经有最佳答案,请猛点这里访问。
这是一个关于asserttrue()如何工作的问题,以及为什么当我将其作为测试运行时,这个看似杂乱的输入错误不会导致问题。我在学习烧瓶和如何进行单元测试,所以如果我弄错了一些术语,请原谅我。
为什么在"请登录"之前,不管"b"是否存在,以下测试都会通过?
使用教程提供的代码:
1 2 3 4 | def test_login_page_loads(self): tester = app.test_client(self) response = tester.get('/login', content_type='html/text') self.assertTrue(b'Please login' in response.data) |
我认为self.asserttrue中的"b"(response.data中的"please login")是一个拼写错误,但它通过了测试,其中包含或不包含字符。
作为参考,这是(大部分)它正在测试的内容:
1 2 3 4 5 6 7 8 9 | Please login <form action="" method="post"> <input type="text" placeholder="Username" name="username" value="{{ request.form.username }}"> <input type="password" placeholder="Password" name="password" value="{{ request.form.password }}"> <input class="btn btn-default" type="submit" value="Login"> </form> |
在查看UnitTest的文档时,我没有看到任何特别的、简单的谷歌搜索结果,没有任何有价值的东西,这里的帖子与逻辑流问题有关,我不确定要从哪里入手。
从我所看到的,有几个可能的答案:1)"b"是函数asserttrue()的一个选项,2)我不理解,它被函数跳过,3)或者测试"评估为true",而不管输入是什么。
在这种情况下,表示字符串是一个字节串。有关详细信息,请参阅此问题的答案:
"b"字符在字符串文本前面做什么?