gpt4 book ai didi

perl - 强制 cmp_deep 在失败时显示哈希中的所有差异

转载 作者:行者123 更新时间:2023-11-28 19:54:09 25 4
gpt4 key购买 nike

我正在用 Perl 编写测试,我需要比较两个大哈希值。我使用 cmp_deep ( Test::Deep ) 和 is_deeply ( Test::More )。我的问题是,当这些哈希值有所不同时,程序会在中间退出。

my $this = {    a=>1,   b=>2,   d=>2, };

my $that = { a=>1, b=>3, c=>3, };

is_deeply($this , $that );

输出是:

# not ok 1
# Failed test at Tester.pl line 32.
# Structures begin differing at:
# $got->{b} = '2'
# $expected->{b} = '3'

但我有更多不同的值(value)观!我需要看到他们。我如何强制 is_deeply 打印哈希之间的所有差异,而不仅仅是它们之间的第一个差异?

此外,还有一些键我需要忽略它们。我该怎么做?

最佳答案

阅读文档通常对这类事情很方便。

您的问题几乎就是 Test::More 中的用例文档。

use Test::More tests => 1;

my $hash1 = { a => 1, b => 2, c => 4 };
my $hash2 = { a => 1, b => 3, c => 4 };

is_deeply($hash1, $hash2, 'hash are equal') or diag explain($hash1,$hash2);

示例输出:

not ok 1 - hash are equal
# Failed test 'hash are equal'
# at test.pl line 7.
# Structures begin differing at:
# $got->{b} = '2'
# $expected->{b} = '3'
# {
# 'a' => 1,
# 'b' => 2,
# 'c' => 4
# }
# {
# 'a' => 1,
# 'b' => 3,
# 'c' => 4
# }
1..1
# Looks like you failed 1 test of 1.

抱歉,我最初误读了您的问题。仔细阅读问题对于提供正确答案非常有帮助。无论如何,找到哈希值的差异会变得相当复杂。我相信有几个 CPAN 模块可以帮助您解决这个问题。我建议在那里找到可以处理您正在处理的数据结构以比较哈希差异的方法。

除此之外,我不知道有什么好方法可以让 Test::More 或 Test::Deep 做你想做的事。希望其他人必须一起来!祝你好运。

关于perl - 强制 cmp_deep 在失败时显示哈希中的所有差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com