Databricks中Assert断言消息丢失类型信息的问题及解决方法
Assert断言错误消息中类型信息丢失(Databricks Notebook环境)
问题重现
本地Python 3.10.6环境中,执行以下代码能正常输出包含完整类型信息的断言错误:
num = 5 assert isinstance(num, str), f"type of {num} is {type(num)}"
预期错误输出:
AssertionError: type of 5 is <class 'int'>
但在Databricks Notebook(浏览器访问)中运行相同代码时,类型信息会丢失:
AssertionError: type of 5 is
原因分析
Databricks Notebook的错误信息通过网页渲染展示,内部会自动解析并过滤疑似HTML标签的内容。type(num)的字符串表示<class 'int'>包含尖括号,被渲染引擎识别为无效HTML标签,因此被过滤移除,导致类型信息丢失。
解决办法
方案1:提取类型名称(简洁直观)
直接获取类型的__name__属性,避免尖括号带来的过滤问题:
num = 5 assert isinstance(num, str), f"type of {num} is {type(num).__name__}"
错误输出:
AssertionError: type of 5 is int
方案2:保留原始类型字符串格式
使用repr()函数生成类型对象的原始字符串表示,确保尖括号内容不会被当作HTML标签过滤:
num = 5 assert isinstance(num, str), f"type of {num} is {repr(type(num))}"
错误输出:
AssertionError: type of 5 is <class 'int'>
方案3:手动构造类型描述
自行拼接无HTML标签风险的描述文本,按需调整格式:
num = 5 assert isinstance(num, str), f"type of {num} is class '{type(num).__name__}'"
错误输出:
AssertionError: type of 5 is class 'int'
内容的提问来源于stack exchange,提问作者Wooly
相关产品推荐
相关产品推荐

