已经在conftest.py里重写hook函数,debug也能看到nodeid显示中文了,实际运行用例显示的时候还是存在乱码
以下是我的hook函数代码
def pytest_collection_modifyitems(
session: "Session", config: "Config", items: List["Item"]
) -> None:
print (items)
for item in items:
item.name=item.name.encode('utf-8').decode('unicode-escape')
item._nodeid = item._nodeid.encode('utf-8').decode('unicode-escape')
以下是我的用例代码
class Test1:
@pytest.mark.run(order=2)
@pytest.mark.parametrize('name',['1安全','2安全'])
def test_foo(self,name):
print (name)
assert True
块引用
def pytest_collection_modifyitems(
session: "Session", config: "Config", items: List["Item"]
) -> None:
print (items)
for item in items:
item.name=item.name.encode('utf-8').decode('unicode-escape')
item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')
# print ("1111",item._nodeid)
QYe
6
item._nodeid 是不是写错啦
应该是
item._nodeid = item._nodeid.encode(‘utf-8’).decode(‘unicode-escape’)`
Jaxon
(霍格沃兹-修然)
9
感觉是某个插件或者什么配置影响到了hook函数,传个完整代码
hogwarts-homework: 作业仓库 (gitee.com)
文件为pytestjson/test/test_pytest_order.py
已解决能在pycharm正确显示中文
首先从编码错误上来看就是编码格式乱码问题,根据该情况确定编码格式是被错误转换了错误为utf-8强制转换成了"unicode-escape",所以在hook中把强制编码转换去掉就可以啦
我的理解大概是pycharm每个人的显示编码格式还是不一样的,转换中文显示还是得按照每个人的具体情况去进行转换
这边确定自己乱码错误是参考 常见乱码参考 - 测试开发 - 测试人社区 (ceshiren.com)这个常见乱码得到的结论,有相同问题的可以自行参考后重新编写hook函数