一、前置说明
比如你想在pytest.ini文本中使用中文做一些注释说明:
[pytest] # 在运行 Pytest 时的一些额外选项 # -v 表示详细输出,显示更详细的测试结果 # -s 表示在控制台输出标准输出(print 语句) addopts = -v -s # log_cli = 1 表示启用在控制台输出日志,1 表示启用,0 表示禁用 log_cli = 1 # log_cli_level = DEBUG 表示在控制台输出的日志的级别为 DEBUG log_cli_level = DEBUG # log_cli_format 定义了在控制台输出的日志的格式 # %(asctime)s 表示日志的时间戳 # %(filename)s 表示产生日志的文件名 # %(lineno)d 表示产生日志的代码行号 # %(funcName)s 表示产生日志的函数名 # %(levelname)s 表示日志的级别(例如,INFO、DEBUG、ERROR) # %(message)s 表示实际的日志消息 log_cli_format = %(asctime)s - %(filename)s:%(lineno)d - %(funcName)s - %(levelname)s - %(message)s
但是运行时,会提示:
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x8c in position 20: illegal multibyte sequence
二、解决办法
问题原因:IniConfig类解析文件时没有指定encoding='utf-8'
。解决办法就是在错误日志中点击连接跳转至iniconfig的__init__.py文件,将f = open(self.path)
修改为f = open(self.path, encoding='utf-8')
。
选择强制修改,然后重启IDE即可。