我们每天运行Selenium测试来测试我们的网站和扩展。如果测试失败,则输出包含字符串FAILED(如果它包含其他字符串则无关紧要)。如果通过,则输出不包含字符串FAILED但必须包含字符串OK。如果输出不包含两个字符串(通常在它为空时),则测试失败。我们用于计算失败的测试的代码是这样的:
None
但问题是,如果两个字符串都不在输出中(例如当文件为空时),它会忽略OK字符串,它会计算通过的测试。我们如何正确计算通过的测试和失败的测试?
答案 0 :(得分:1)
循环文件并执行适当的检查。搜索字符串将超过shell计算所产生的任何开销。
declare -i fail=0
declare -i success=0
for fileName in *
do
if grep -q FAILED "$fileName"
then
fail+=1
elif grep -q OK "$fileName"
then
success+=1
else
fail+=1
fi
done
printf "%d failed, %d succeeded\n" "$fail" "$success"
另一种方法是传递文件名列表。计算FAILED
不的文件数量,其中包含OK
:
grep -l OK $(grep -L FAILED *) | wc -l
计算其中有FAILED
个文件或 FAILED
以及 OK
的文件数量:
(grep -l FAILED *; egrep -L 'FAILED|OK' *) | wc -l
计数方法会出现奇怪的文件名(即文件名中的空格或换行符等)的问题,但是你可以放心地假设在你的特殊情况下文件名是正确的。