您好我注意到assertRaisesRegexp在Python 2.7上不能與unicode一起使用。 我試圖運行下面的代碼assertRaisesRegexp在Python2中與unicode一起工作
import unittest
def raise_exception():
raise Exception(u'\u4e2d\u6587')
class TestUnicode(unittest.TestCase):
def test_test1(self):
with self.assertRaisesRegexp(Exception, u'\u4e2d\u6587'):
raise_exception()
if __name__ == '__main__':
unittest.main()
但有以下錯誤
Traceback (most recent call last):
File "C:\ZChenCode\unicode.py", line 27, in test_test1
raise_exception()
File "C:\Python27\ArcGIS10.3\Lib\unittest\case.py", line 127, in __exit__
if not expected_regexp.search(str(exc_value)):
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
看起來像Python標準庫正試圖將unicode字符串轉換爲str導致錯誤類型。 如果我使用assertRaiseRegx,這個函數在Python3上運行良好,沒有unicode問題。 關於如何使它在Python2中工作的任何建議?