perl – 强制cmp_deep显示失败时哈希值的所有差异
发布时间:2020-12-16 06:13:11 所属栏目:大数据 来源:网络整理
导读:我正在用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 ); 输出是
|
我正在用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'
但我有更多不同的价值观!我需要全部看到它们. 此外,还有一些我需要忽略它们的键.我怎样才能做到这一点? 解决方法
阅读文档对于这类事情来说通常很方便.
您的问题几乎是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做你想要的好方法.有人希望有其他人来!祝好运. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
