lib/actir/parallel_tests/test/runner.rb in actir-1.0.2 vs lib/actir/parallel_tests/test/runner.rb in actir-1.0.3

- old
+ new

@@ -88,10 +88,16 @@ "export #{k}=#{v}" end.join(separator) cmd = "#{exports}#{separator}#{cmd}" output = open("|#{cmd}", "r") { |output| capture_output(output, silence) } + #modify by shanmao + #获取执行的测试套详细信息 + get_testsuite_detail(output) + #获取失败的用例的详情 + get_testfailed_detail(output) + #modify by Hub #exitstatus = $?.exitstatus #"$?.exitstatus" 返回的值有时有问题,不能明确标示用例执行结果是否成功 #改成判断结果数据中是否有failure和error exitstatus = get_test_failed_num(find_results(output).join) @@ -129,9 +135,44 @@ #TO-DO jenkins服务器上的ruby是用rvm管理的,这里有个坑,在jenkins中调用ruby命令会报找不到 #后续考虑更换rvm至rbenv #jenkins服务器上的ruby所在地址 "/usr/local/rvm/rubies/ruby-2.0.0-p598/bin/ruby" end + end + + # + # 通过结果判断测试套的详细信息 + # 将测试套和测试用例的详细信息写入全局变量$testsuites中 + # + def get_testsuite_detail output + $testsuites = [] unless $testsuites + output.scan(/^(\[suite start\])([^\.][^E]*)(\[suite end\])$/).each do |suite| + suitename = suite[1].scan(/^(suitname:\s*)([\d\w]*)/)[0][1] + cases = suite[1].scan(/^(testcase:\s*)([\d\w]*)/).inject([]) do |cases,testcase| + cases << {:testcase_name => testcase[1], :succuss => true, :detail => nil} + end + # 如果testsuites中已存在此用例的信息,说明这个用例执行了rerun,就不再次添加了 + is_case_exist = $testsuites.inject(false) do |is_case_exist, testsuite| + if testsuite.has_value?(suitename) + is_case_exist = true + break + end + is_case_exist + end + if(is_case_exist == false) + testsuite = {:testsuite_name => suitename, :testcases =>cases} + $testsuites << testsuite + end + end + # p $testsuites + end + + # + # 通过结果判断失败用例,获取失败用例的详细信息 + # 将测试套和测试用例的详细信息写入全局变量$testsuites中 + # + def get_testfailed_detail output + end # # 通过结果判断是否有用例失败 # 返回失败用例的数目