繁体   English   中英

带有西里尔符号的pytest 3.0.5

[英]pytest 3.0.5 with cyrillic symbols

我在pytest-3.0.5的文件路径中显示带有俄语文本的测试名称时出现问题。 当我在pytest == 2.9.2上运行时-一切正常:

py.test -s -q --collect-only

输出:

test_card.py::test_graphic_card[/root/test_cases/files/Кредитная_карта_мир_41.png]

但是当我尝试在pytest == 3.0.5上运行相同的命令时:

py.test -s -q --collect-only

输出:

test_card.py::test_graphic_card[/root/test_cases/files/\xd0\x9a\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x82\xd0\xbd\xd0\xb0\xd1\x8f_\xd0\xba\xd0\xb0\xd1\x80\xd1\x82\xd0\xb0_\xd0\xbc\xd0\xb8\xd1\x80_41.png]

如何让py.test == 3.0.5显示测试名称,例如显示的py.test == 2.9.2?

我查看了pytest源代码,发现在最新版本的pytest中,当收集测试时,将使用最近添加的函数“ _escape_strings ”对它们进行处理。 在此功能中:

if isinstance(val, bytes):
    try:
        return val.encode('ascii')
    except UnicodeDecodeError:                     
        return val.encode('string-escape')
    else:
        return val.encode('unicode-escape')

我想这个功能是不言自明的。 最后,我解决了我在最终测试报告中解码和转义结果的问题,例如:

result = "/root/test_cases/files/\xd0\x9a\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x82\xd0\xbd\xd0\xb0\xd1\x8f_\xd0\xba\xd0\xb0\xd1\x80\xd1\x82\xd0\xb0_\xd0\xbc\xd0\xb8\xd1\x80_41.png"
print result.decode('string-escape') 
Out: /root/test_cases/files/Кредитная_карта_мир_41.png

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM