pytest 是否在测试名称中支持 unicode?



这是我的测试样本(test_time.py(:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest
from datetime import datetime, timedelta
testdata = [
(datetime(2001, 12, 12), datetime(2001, 12, 11), timedelta(1)),
(datetime(2001, 12, 11), datetime(2001, 12, 12), timedelta(-1)),
]
@pytest.mark.parametrize("a,b,expected", testdata, ids=[u"中文", u"English"])
def test_timedistance_v1(a, b, expected):
diff = a - b
assert diff != expected

下面是 pytest 输出:

============================================================================== FAILURES ==============================================================================
_________________________________________________________________ test_timedistance_v1[u4e2du6587] _________________________________________________________________
a = datetime.datetime(2001, 12, 12, 0, 0), b = datetime.datetime(2001, 12, 11, 0, 0), expected = datetime.timedelta(1)
@pytest.mark.parametrize("a,b,expected", testdata, ids=[u"中文", u"English"])
def test_timedistance_v1(a, b, expected):
diff = a - b
>       assert diff != expected
E       assert datetime.timedelta(1) != datetime.timedelta(1)
test_time.py:15: AssertionError
___________________________________________________________________ test_timedistance_v1[English] ____________________________________________________________________
a = datetime.datetime(2001, 12, 11, 0, 0), b = datetime.datetime(2001, 12, 12, 0, 0), expected = datetime.timedelta(-1)
@pytest.mark.parametrize("a,b,expected", testdata, ids=[u"中文", u"English"])
def test_timedistance_v1(a, b, expected):
diff = a - b
>       assert diff != expected
E       assert datetime.timedelta(-1) != datetime.timedelta(-1)
test_time.py:15: AssertionError
====================================================================== 2 failed in 0.05 seconds ======================================================================

对于输出中的第二行,测试名称是"test_timedistance_v1[\u4e2d\u6587]",我希望是"test_timedistance_v1[中文]",py.test 支持吗? (我的 pytest 版本是 3.1.2,操作系统:macOS 10.12.5(

它不依赖于pytest,而是取决于您的计算机语言环境。

这里是测试的跟踪日志(LC_ALL="en_US。UTF-8">( :

================================ test session starts ================================
platform linux -- Python 3.5.3, pytest-2.9.2, py-1.4.34, pluggy-0.3.1
rootdir: /home/..../tmp, inifile: 
collected 2 items 
pytest_chin.py FF
===================================== FAILURES ======================================
_____________________________ test_timedistance_v1[中文] ______________________________
...

使用LC_ALL="fr_FR.iso8859-1">

================================ test session starts ================================
platform linux -- Python 3.5.3, pytest-2.9.2, py-1.4.34, pluggy-0.3.1
rootdir: /home/gustavi/tmp, inifile: 
collected 2 items 
pytest_chin.py FF
===================================== FAILURES ======================================
x1b[1mx1b[31m_____________________________ test_timedistance_v1[u4e2du6587] ______________________________x1b[0m
...

这里有一个有用的链接,可以在OS X上设置您的语言环境。

最新更新