You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单元测试text_to_html函数触发断言错误的原因及解决方法咨询

问题原因
  • 测试用的多行三引号字符串会保留每行的前置缩进:你定义string变量时,THIS、IS A TEST、STRING每行前面的多个空格属于字符串的原生内容,你的text_to_html函数仅替换了换行符为<br>,没有处理这些前置空格,因此转换结果和你写的预期输出string_output不匹配。
  • 单元测试断言参数顺序可能有误:unittest的assertEqual方法常规用法是assertEqual(预期值, 实际值),如果参数顺序写反会导致报错信息里的预期/实际标注倒置。
解决方法

根据你的需求可以选择以下两种方案:

方案1:修正测试用例,保留原转换逻辑

如果你不需要修改text_to_html的转换规则,仅需要测试通过,可以先处理测试用的字符串,去掉多余的公共前置缩进:

import textwrap
import unittest

class TestDebtModules(unittest.TestCase):
    def test_html(self):
        # 用textwrap.dedent自动去掉多行字符串的公共前置缩进
        string = textwrap.dedent("""
        THIS
        IS A TEST
        STRING
        """)
        string_input = text_to_html(string)
        string_output = r'<p><br>THIS<br>IS A TEST<br>STRING<br></p>'
        self.assertEqual(string_output, string_input)

方案2:修改转换函数,自动去除每行前后空白

如果你希望转换HTML时自动忽略每行的前后空白,可以调整text_to_html的实现逻辑:

def text_to_html(text):
    """
    Convert text into HTML
    Args:
        text (str): text to convert
    Returns:
        str: HTML string
    """
    # 拆分每行后去除前后空白,过滤空行后用<br>拼接
    processed_lines = [line.strip() for line in text.splitlines() if line.strip()]
    html = "<p>" + "<br>".join(processed_lines) + "</p>"
    return html

修改后不需要调整测试用例,直接运行即可通过断言。

内容的提问来源于stack exchange,提问作者banana_99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:36:04