2017-07-04 89 views
0

這是我的測試樣品(test_time.py):pytest是否支持測試名稱中的unicode?

#!/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,操作系統:macOS 10.12.5)

+0

只要找到[本pytest問題(https://github.com/pytest-dev/p ytest/issues/2482),看起來還不支持。 –

回答

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上的語言環境

+0

我試圖將LC_ALL&LANG導出爲en_US.UTF-8 | zh_CN | zh_CN.UTF-8 | C.UTF-8,都不起作用。也許它只適用於Linux平臺。 –