Parsing 分析不规则活动的文件,请求对方法的反馈

Parsing 分析不规则活动的文件,请求对方法的反馈,parsing,Parsing,嗨 我想就如何处理解析此文件的任务获得一些想法和反馈。 我基本上需要“开始测试”和“完成测试”之间每个子测试的名称和状态 问题是,有时没有“完成”,并且由于测试崩溃而直接开始 我开始一行一行地写我的脚本,试图处理所有的场景,但是逻辑开始变得复杂和复杂,所以我忍不住想一定有更聪明的方法来解决这个问题。 任何想法、代码、伪代码都将不胜感激 myfile.log ****Starting test of test1 Message: Total Tests: 5 Log 23w4arg Log

嗨 我想就如何处理解析此文件的任务获得一些想法和反馈。 我基本上需要“开始测试”和“完成测试”之间每个子测试的名称和状态 问题是,有时没有“完成”,并且由于测试崩溃而直接开始

我开始一行一行地写我的脚本,试图处理所有的场景,但是逻辑开始变得复杂和复杂,所以我忍不住想一定有更聪明的方法来解决这个问题。 任何想法、代码、伪代码都将不胜感激

    myfile.log
****Starting test of test1
Message: Total Tests: 5
Log 23w4arg
Log 3958300
Message: PASS : test1SubTest1(): Pass
Log 23w4arg
Log efasf0
Message: PASS : test1SubTest2(): Pass
Log eafsarg
Log 3asf0
Message: FAIL: test1SubTest3(): Pass
Log 23asffg
Log 3fsaf00
Message: PASS : test1SubTest4(): Pass
Log 23fsafg
Log 3ag300
Message: PASS : test1SubTest5(): Pass
Message: Totals: 4 passed, 1 failed, 0 skipped
****Finished testing test1
Log 3ag3aw0
Log 3ag340
****Starting test of test2
Message: Total Tests: 3
Log 23w4arg
Log 3958300
Message: PASS : test2SubTest1(): Pass
Log 23w4arg
Log efasf0
Message: PASS : test2SubTest2(): Pass
Log 3ag340
****Starting test of test3
Log 234rg
Log 394w300
Message: PASS : test3SubTest1(): Pass
Log 23w4gdg
Log esdsf0
Message: PASS : test3SubTest2(): Pass
Log eafjhg
Log 3hj0
Message: FAIL: test3SubTest3(): Pass
Message: Totals: 2 passed, 0 failed, 0 skipped
****Finished testing test3

生产:
测试1信息:
信息:测试总数:5
test1SubTest1()已完成,结果为通过
test1SubTest2()已完成,结果通过
test1SubTest3()已完成,但结果失败
test1SubTest4()已完成,结果通过
test1SubTest5()已完成,结果为通过
4个通过,1个失败,0个跳过,结果总计已完成
测试2信息:
信息:总测试数:3
test2SubTest1()已完成,结果为通过
test2SubTest2()已完成,结果为通过
测试3信息:
test3SubTest1()已完成,结果为通过
test3SubTest2()已完成,结果为通过
test3SubTest3()已完成,但结果失败
通过2次,失败0次,跳过0次,结果总计已完成
我会添加一些检查失败的测试和东西,但这应该足以让你开始。
    <?php

$file = "log.txt";
$fh = fopen($file, "r");
$contents = fread($fh, filesize($file));
$lines = explode("\n", $contents);
foreach($lines as $l) {
        $startStr = "****Starting test of ";
        $l = trim($l);
        if(stristr($l, $startStr)) {
                $curTest = str_replace($startStr, "", $l);
                echo "$curTest info:\n";
        }
        if(substr($l, 0, 7)=='Message') {
                if(stristr($l, "Total Tests")) {
                        echo "$l\n";
                }
                else {
                        // Test result
                        $infoArr = explode(":", $l);
                        echo "$infoArr[2] completed with result $infoArr[1]\n";
                }
        }

}

?>


Produces:
test1 info:
Message: Total Tests: 5
 test1SubTest1() completed with result  PASS 
 test1SubTest2() completed with result  PASS 
 test1SubTest3() completed with result  FAIL
 test1SubTest4() completed with result  PASS 
 test1SubTest5() completed with result  PASS 
 4 passed, 1 failed, 0 skipped completed with result  Totals
test2 info:
Message: Total Tests: 3
 test2SubTest1() completed with result  PASS 
 test2SubTest2() completed with result  PASS 
test3 info:
 test3SubTest1() completed with result  PASS 
 test3SubTest2() completed with result  PASS 
 test3SubTest3() completed with result  FAIL
 2 passed, 0 failed, 0 skipped completed with result  Totals