Pytest-html 报告内中文方法标题乱码

tech2022-07-12  159

Pytest-html 报告中文标题乱码

公司有个自己搭建的UI自动化测试项目,使用python3.7 + pytest + selenium + Chrome搭建而成的。 为了方便Case的标识,我个人把Case的文件起名为“def test_你好”这种格式,在调试时中文显示正常,但是在pytest-html生成的 report.html 报告中,HTML报告中对应test一栏中文显示成乱码了,如“test_公开å”这种形式的,但整个报告除了此处,其他位置中文均显示正常,研究了很多方法,网上各种方法都尝试了,包括代码调试,指定utf-8编码,对字符串各种编解码,均无效。

后来有幸看到了https://blog.csdn.net/wang785994599/article/details/97653329 这篇博文,而后对比pytest-html中的源码,终于找到了问题的所在

在pytest-html 插件下的plugin.py中(路径:/lib/python3.7/site-packages/pytest_html/plugin.py),对于test_id转换出现了问题,按照上述博文的描述中显示的那样,当content=‘你好’(中文或中英文混杂时) content = content.encode(“utf-8”).decode(“unicode-escape”) ==> /哈哈 中文被转码导致乱码 根据博主给出的解决方法,修改plugin.py中对于test_id的编码赋值 self.test_id = re.sub(r’(\u[\s\S]{4})’, lambda x: x.group(1).encode(“utf-8”).decode(“unicode-escape”), report.nodeid) 最终生成的报告中显示正确了。 里里外外折腾了将近两个多月的时间才搞定,期间从来没有敢否定过插件源码的问题,都是在自己的身上和服务器环境中找问题,不难看出自己的水平还是不高。

在此写一篇,如果有遇到类似的问题,可以避免再次掉到坑里

最新回复(0)