点击关注微信公众号 wenyuqinghuai
分享提纲:
1. 问题背景
2. 代码实现
1.问题背景
在做公司的测试的自动化测试时,覆盖了一些开发代码的函数,但是那些还没有做,使用一个函数一个函数搜索的方法还是比较慢的,这里提供一种快速找出来还有那些函数没有做的方法。
大致的思路是,完全使用shell脚本实现:
1)【搜集函数html】
将已经做了的函数,因为可以拿到url的html源码,匹配出一个 函数集合 sourceWeb.log
2)【执行脚本获取结果】
-- 执行脚本 sh run.sh, 里边做的工作是获取开发代码中的函数集合
local_fun.log,遍历这些函数,没有在文件
sourceWeb.log中的就放到最终结果
result.log
-- result.log 就是那些还未加到自动化测试的开发的函数
2.代码实现
shell脚本 run.sh的代码如下,最终生成结果是 result.log
1 #!/bin/sh 2 #以下为多行注释 http://www.cnblogs.com/emanlee/p/3749911.html 3 :<<eof 4 【使用说明】 5 1)【搜集函数html】 6 7 将已经做了的函数,因为可以拿到url的html源码,匹配出一个 函数集合 sourceWeb.log 8 9 2)【执行脚本获取结果】 10 -- 执行脚本 sh run.sh, 里边做的工作是获取开发代码中的函数集合 local_fun.log,遍历这些函数,没有在文件sourceWeb.log中的就放到最终结果 result.log 11 -- result.log 就是那些还未加到自动化测试的开发的函数 12 eof 13 14 15 #1.获取自动化测试已经有的函数 web_fun.log 16 function getSourceWebUrl() 17 { #{{{ 18 #获取所在匹配行 19 grep "function_css_class” sourceWeb.url -rn |awk -F : '{printf $1+1" \n"}'>1.num.log 20 #获取自动化系统已经有的函数 21 cat 1.num.log |xargs -I {} sed -n '{}p' sourceWeb.url >web_fun.log 22 #删除临时文件 23 rm 1.num.log 24 } #}}} 25 26 #2.获取开发函数 service_fun.log 27 function getLocalFunction() 28 { #{{{ 29 grep "public function" ./ -rn|awk -F : '{printf $3" \n"}'|awk '{printf $3" \n"}'|awk -F '(' '{printf $1" \n"}'>local_fun.log 30 } #}}} 31 32 #3.获取最后的结果(还没有加到自动化中的函数 result.log) 33 function getLast() 34 { #{{{ 35 echo "">lastResult.log 36 #echo "@@@-----------------newStart">>lastResult.log 37 cat local_fun.log| while read line 38 do 39 #echo "File:${line}" 40 grep_res=`grep ${line} web_fun.log -rn` 41 if [ -z "$grep_res" ] 42 then 43 echo -e "\n[0未加入]${line}没有加入自动化\n" 44 echo -e "${line}">>lastResult.log 45 else 46 echo -e "[1加入了]${line}已加入自动化" 47 48 fi 49 done 50 #排序去重 51 sort lastResult.log |uniq>result.log 52 #echo -e "@@@-------------------------newEnd\n\n">>lastResult.log 53 } #}}} 54 55 #4. 删除中间文件 56 function rmTmpLog() 57 { #{{{ 58 #删除临时文件 59 rm web_fun.log 60 rm local_fun.log 61 rm lastResult.log 62 } #}}} 63 64 echo -e "start\n" 65 getSourceWebUrl; 66 getLocalFunction; 67 getLast; 68 #删除中间文件 69 rmTmpLog; 70 echo -e "end\n"