关于python:使用unittest什么是b ?: self.assertTrue(b’请登录’

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"字符在字符串文本前面做什么?