我有一个将单词从英语翻译成俄语的代码。我还有一个包含数组数组的 JSON 文件,用于检查音译器的运行情况。以下是测试代码:
func TestMain(t *testing.T) {
b, err := os.ReadFile("../json/testcases.json")
if err != nil {
fmt.Println("Ошибка записи данных:", err)
}
var testTranslit [][]string
err = json.Unmarshal(b, &testTranslit)
if err != nil {
fmt.Print("Ошибка десириализации файла")
}
for _, v := range testTranslit {
assert.EqualValues(t, strings.ToLower(v[1]), mainTest(v[0]))
}
在终端完成测试后我得到以下结果:
expected: "мантра" actual : "мэнтра" Diff: --- Expected +++ Actual @@ -1 +1 @@ -мантра +мэнтра
是否可以通过仅保留预期值和实际值来获得格式化的测试结果?
包含预期、实际和差异的长消息由您使用的库生成
github.com/stretchr/testify/assert:assert.Equal在内部,该库调用一个函数
t.Errorf,这是testing.T该库使用的唯一方法assert。您可以使用所需的方法实现来创建自己的类型Errorf。例如,像这样:此方法
Errorf将输出分成几行并查找以expected和开头的行actual。如果找到这样的行,则只在日志中打印它们。例子:
结果
提供的代码仅作为示例。例如,当值
actual跨越多行时它将不起作用expected。您可以自行修改它以满足您的需要。