我想知道为什么这些断言正在传递
token_generated = ".eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImRhdmlkLmJhcnJhdEBub3ZhcnRpcy5jb20iLCJleHBpcmF0aW9uIjoiMjAxOC0wMS0xMVQyMjowNTozMi44MjIwNDUifQ.jalHa2ZpnxH00v3tP6CKL3nUkiTMt4rsjo6P3DM32DA"
self.assertTrue(type(token_generated) == str)
self.assertTrue(type(token_generated) == bytes)
两个测试都通过了,但我不明白为什么我的令牌变量可以有两种类型,因为它应该只是一个字符串
因为当我打印token_generated
print (type(token_generated))
我明白了:.<type 'str'>
答案 0 :(得分:1)
假设您使用的是Python 2,str
- 和bytes
- 类型实际上是相同的
>>> bytes is str
True
因此他们也是平等的。
如果你想知道token
是否是有效的utf8字符串,你应该解码它:
token = '\xff'
try:
token.decode('utf8')
except UnicodeDecodeError:
print "The bytes are just bytes, or maybe some other encoding"
else:
print "The bytes are a utf8 string, hooray"