0
repr
の例外を返すコードがあります。それは次のようにコードの非常に易しく書き直さダウンバージョンであるPythonの2とPython 3Python 2&3互換のUnicode文字列アサート同値
上で実行する必要がある:
from __future__ import unicode_literals
class Foo:
def bar(self):
return repr(Exception('bar'))
問題は、上記のコードをテストです。
のPython 3.5:
foo = Foo()
assert foo.bar() == "Exception('bar',)"
# true
のPython 2.7:
foo = Foo()
assert foo.bar() == "Exception('bar',)"
# false because foo.bar() returns "Exception(u'bar',)",
# note the ``u`` before the first ``'``
二つの文字列の平等を主張するときにu
を無視するエレガントな方法はありますか?私はunittest2を使用しています。
'str'に' bar'を型キャストしますか?すなわち 'str( 'bar')' –
Pythonのバージョンが動いているかどうかによって、期待される結果をちょうど定義する必要があるようです。 – user2357112
これは私が今持っているものです。しかし、複数行の文字列と多くのテストでは、これは重複が多いことを意味するので、私はより良い解決策を模索しています。 – zupo