有时候我们做自动化测试时候,希望测试用例的名字是中文,方便查看。但是pytest现在的版本并不支持中文的测试用例名称显示。我们想办法修改源代码实现

遇到的问题

如果测试用例的参数中有中文,你看到的pytest的测试结果将是这样的:

test/ximalaya/album/test_category_list.py::TestCategoryList::test_category_list[[stg]\\u83b7\\u53d6\\u559c\\u9a6c\\u62c9\\u96c5\\u5185\\u5bb9\\u5206\\u7c7b] PASSED  

解决问题

先说做法,参考这个PR:
https://github.com/pytest-dev/pytest/pull/4567/commits/13505b0ea20d26b1e656325e08a57bb46298c771
这个做法是将pytest的源码中的node.py文件的Node类中的name属性做一下编码解码操作

# self.name = name
self.name = name.encode(\"utf-8\").decode(\"unicode_escape\") # 支持中文

这样修改后,效果是

test/ximalaya/album/test_category_list.py::TestCategoryList::test_category_list[[stg]获取喜马拉雅内容分类] PASSED    
收藏 打印