点击关注微信公众号 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"