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

时间:2017-07-04 10:24:16

标签: python pytest

这是我的测试样本(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[\u4e2d\u6587] _________________________________________________________________

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,OS:macOS 10.12.5)

1 个答案:

答案 0 :(得分:1)

它不依赖于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[1m\x1b[31m_____________________________ test_timedistance_v1[\u4e2d\u6587] ______________________________\x1b[0m
...

Here是在OS X上设置语言环境的有用链接。