-2

在重复标签之间搜索字符串时需要一些帮助我有一个文本文件,其格式在文件中重复多次

========== 文件名:fixed_am_7bitLI_HE10.txt 测试用例:Test_Case_1 START ==========

区块 1 TC ID OK

块 2 输入部分 OK 数据部分 OK

块 3 输入部分 OK 数据部分 OK

块 4 输入部分 OK 数据部分 OK

========== 文件名:fixed_am_7bitLI_HE10.txt 测试用例:Test_Case_2 START ========

区块 1 TC ID OK

块 2 输入部分 OK

  • 行不匹配:输出行:“从池中分配的缓冲区:MIF_CTRL_POOL,buffer_id:1,大小(字):4”参考行:“pdcp_pdu_delete_count = 0,reset_cip_rdy = 1”
  • 行不匹配:输出行:“pdcp_pdu_delete_count = 0,reset_cip_rdy = 1”参考行:“-- MIF CTRL 输出:------------------------- -------------------------------------------------- ————”
  • 行不匹配:输出行:“-- MIF CTRL 输出:------------------------- -------------------------------------------------------" 参考行:"mif_ctrl_rlc_am_um_reset_reestablish_ind_t。 rlc_reset_reestablish_ind = 3 (0x0003)"
  • 行不匹配:输出行:“mif_ctrl_rlc_am_um_reset_reestablish_ind_t.rlc_reset_reestablish_ind = 3 (0x0003)”参考行:“从池中释放的缓冲区:MIF_CTRL_POOL,buffer_id 0,大小(字)6(使用 5)”
  • 行数不匹配:最后一个输出行:“mif_ctrl_rlc_am_um_reset_reestablish_ind_t.rlc_reset_reestablish_ind = 3 (0x0003)”最后一个参考行:“从池中释放的缓冲区:MIF_CTRL_POOL,buffer_id 0,大小(字)6(使用 5)”

数据部分不同

块 3 输入部分 OK 数据部分 OK

块 4 输入部分 OK 数据部分 OK

========== 文件名:fixed_am_7bitLI_HE10.txt 测试用例:Test_Case_3 START ========

区块 1 TC ID OK

块 2 输入部分 OK 数据部分 OK

块 3 输入部分 OK 数据部分 OK

块 4 输入部分 OK 数据部分 OK

**我需要查找开始标签之间是否存在除“OK”以外的任何内容,如果是,我必须将特定块标记为失败

例如,如果我在测试用例:Test_Case_1 START 和测试用例:Test_Case_2 START 之间发现除 OK 以外的任何其他内容,我必须将测试用例:Test_Case_1 标记为失败

以这种格式更新 的预期输出

文件名:fixed_am_7bitLI_HE10.txt 测试用例:Test_Case_1 状态:PASS(如果标签之间没有字符串“DIFFERS”(==)

文件名:fixed_am_7bitLI_HE10.txt 测试用例:Test_Case_2 状态:失败(如果标签之间有字符串'DIFFERS'(==)

更新-2

如果万一测试用例失败

文件名:fixed_am_7bitLI_HE10.txt 测试用例:Test_Case_2 状态:FAILED

块不同的部分是:

第 2 座

输入部分 OK

  • 行不匹配:输出行:“从池中分配的缓冲区:MIF_CTRL_POOL,buffer_id:1,大小(字):4”参考行:“pdcp_pdu_delete_count = 0,reset_cip_rdy = 1”
  • 行不匹配:输出行:“pdcp_pdu_delete_count = 0,reset_cip_rdy = 1”参考行:“-- MIF CTRL 输出:------------------------- -------------------------------------------------- ————”
  • 行不匹配:输出行:“-- MIF CTRL 输出:------------------------- -------------------------------------------------------" 参考行:"mif_ctrl_rlc_am_um_reset_reestablish_ind_t。 rlc_reset_reestablish_ind = 3 (0x0003)"
  • 行不匹配:输出行:“mif_ctrl_rlc_am_um_reset_reestablish_ind_t.rlc_reset_reestablish_ind = 3 (0x0003)”参考行:“从池中释放的缓冲区:MIF_CTRL_POOL,buffer_id 0,大小(字)6(使用 5)”
  • 行数不匹配:最后一个输出行:“mif_ctrl_rlc_am_um_reset_reestablish_ind_t.rlc_reset_reestablish_ind = 3 (0x0003)”最后一个参考行:“从池中释放的缓冲区:MIF_CTRL_POOL,buffer_id 0,大小(字)6(使用 5)”

数据部分不同

4

2 回答 2

0

胡乱猜测:

while(<>) {print '**FAIL**' unless /TC ID OK/;  print $_; }

但实际上,您应该指定您的要求。

于 2013-04-08T08:35:16.873 回答
0

也许有些古怪,类似于以下内容:

#!/usr/bin/env perl

use strict;
use warnings;

my ($failed, $file, $test);
while (<>)
{
        chomp;
        next if /^$/;
        if (/^=/)
        {
                print "$file $test Status: $failed\n" if $failed;
                ($file, $test) = ($_ =~ /(File Name:\s+\S+).+\b(Test Case: Test_Case_\d+)\b/);
                $failed = 'PASSED';
                next;
        };
        $failed = 'FAILED' if /\bDIFFERS\b/g;
}
print "$file $test Status: $failed\n";

数据

$ cat testdata
========== File Name: fixed_am_7bitLI_HE10.txt Test Case: Test_Case_1 START ==========

Block 1 TC ID OK

Block 2 Input section OK data section OK

Block 3 Input section OK data section OK

Block 4 Input section OK data section OK

========== File Name: fixed_am_7bitLI_HE10.txt Test Case: Test_Case_2 START ========

Block 1 TC ID OK

Block 2 Input section OK data section DIFFERS

Block 3 Input section OK data section OK

Block 4 Input section OK data section OK

调用

$ ./t.pl < testdata
File Name: fixed_am_7bitLI_HE10.txt Test Case: Test_Case_1 Status: PASSED
File Name: fixed_am_7bitLI_HE10.txt Test Case: Test_Case_2 Status: FAILED
于 2013-04-08T09:12:42.303 回答