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做你想要的好方法.有人希望有其他人来!祝好运. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |