Closed
Description
When the failed asserts include unicode text then you will get a UnicodeEncodeError
on pytest >3.0, this works correctly on 2.9.2.
Using:
def test_unicode_in_error():
a = u"使用自動捲動 (&A)"
b = u"使用自動捲動"
assert a == b
pip install pytest==3.0.1
test_simple.py
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/main.py", line 96, in wrap_session
INTERNALERROR> session.exitstatus = doit(config, session) or 0
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/main.py", line 131, in _main
INTERNALERROR> config.hook.pytest_runtestloop(session=session)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724, in __call__
INTERNALERROR> return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333, in <lambda>
INTERNALERROR> _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596, in execute
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/main.py", line 152, in pytest_runtestloop
INTERNALERROR> item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724, in __call__
INTERNALERROR> return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333, in <lambda>
INTERNALERROR> _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 595, in execute
INTERNALERROR> return _wrapped_call(hook_impl.function(*args), self.execute)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 253, in _wrapped_call
INTERNALERROR> return call_outcome.get_result()
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result
INTERNALERROR> _reraise(*ex) # noqa
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 264, in __init__
INTERNALERROR> self.result = func()
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596, in execute
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/runner.py", line 66, in pytest_runtest_protocol
INTERNALERROR> runtestprotocol(item, nextitem=nextitem)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/runner.py", line 79, in runtestprotocol
INTERNALERROR> reports.append(call_and_report(item, "call", log))
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/runner.py", line 133, in call_and_report
INTERNALERROR> call = call_runtest_hook(item, when, **kwds)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/runner.py", line 151, in call_runtest_hook
INTERNALERROR> return CallInfo(lambda: ihook(item=item, **kwds), when=when)
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/runner.py", line 168, in __init__
INTERNALERROR> self.excinfo = ExceptionInfo()
INTERNALERROR> File "/Users/dwayne/dev/envs/pytest-unicode/lib/python2.7/site-packages/_pytest/_code/code.py", line 357, in __init__
INTERNALERROR> exprinfo = str(tup[1])
INTERNALERROR> UnicodeEncodeError: 'ascii' codec can't encode characters in position 8-13: ordinal not in range(128)
pip install pytest==2.9.2
def test_unicode_in_error():
a = u"使用自動捲動 (&A)"
b = u"使用自動捲動"
assert a != b
> assert a == b
E assert '使用自動捲動 (&A)' == '使用自動捲動'
E - 使用自動捲動 (&A)
E + 使用自動捲動