我不知道这有多重要,但我觉得这很烦人,我不知道这是因为这对我来说是新的,还是我误解了一些事情
我正在将一个flask应用程序移植到Python 3中,在Python 2中,我进行了如下单元测试:
project1=Project(shortname="newproj1")
db.session.add(project1)
db.session.commit()
response1 = self.app.test_client().get('/projects/')
self.assertEqual('200 OK', response1.status)
self.assertIn('newproj1', response1.data)
在python3中,这是失败的,因为Flask的响应对象是字节字符串,而查找的对象是unicode字符串
有几种不同的方法可以解决这个问题。我不知道他们中的一个是最好的,还是更好的,或者有没有别的方法去做我没有想到的事情。在某种程度上,这让我很恼火,因为我想出的任何方法似乎都不如Python2干净
选项1-添加解码调用:
self.assertIn('newproj1', response1.data.decode())
选项2-更改响应对象
response1 = self.app.test_client().get('/projects/', as_text=True)
...
self.assertIn('newproj1', response1.data)
选项3-声明正在搜索的数据以查找byte对象
self.assertIn(b'newproj1', response1.data)
有没有更好的办法?我是不是想得太多了?还是我遗漏了什么
目前没有回答
相关问题 更多 >
编程相关推荐