我有,只能接受在Python 2.x的Unicode文本測試爲的UnicodeDecodeError在Python 3
def testNonUnicodeInput(self):
""" Test falure on non-unicode input. """
input = "foo".encode('utf-16')
self.assertRaises(UnicodeDecodeError, myfunction, input)
但是功能下面的測試,在Python 3.x的運行時測試失敗我得到:
AssertionError: UnicodeDecodeError not raised by myfunction
我試圖找出如何建立一個測試,將繼續在Python 2.x到工作,也將通過2to3的Python的3.x中被運行後工作
我也許應該注意到,我做了以下在我的功能給力的Unicode:
def myfunction(input):
""" myfunction only accepts unicode input. """
...
try:
source = unicode(source)
except UnicodeDecodeError, e:
# Customise error message while maintaining original trackback
e.reason += '. -- Note: Myfunction only accepts unicode input!'
raise
...
當然,這(與測試一起)被正在對Python 3的運行之前通過2to3的運行。X。我想我真正想要在Python 3上的是不接受字節串,我雖然我通過首先編碼字符串。我沒有使用'utf-8'作爲編碼,因爲我知道這是默認設置。
任何人有任何關於一致性的想法嗎?
這就是我的想法,但測試失敗。或者我應該跳過Python 3中的這個測試嗎? – Waylan