zoukankan      html  css  js  c++  java
  • 【shell脚本】shell脚本实现的 函数差集查找

    文本地址

    点击关注微信公众号 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" 
    "}'>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" 
    "}'|awk  '{printf $3" 
    "}'|awk -F '(' '{printf $1" 
    "}'>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 "
    [0未加入]${line}没有加入自动化
    "
    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
    
    ">>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
    "
    65 getSourceWebUrl;
    66 getLocalFunction;
    67 getLast;
    68 #删除中间文件
    69 rmTmpLog;
    70 echo -e "end
    "
     
     
     
     
     
     
     
     
  • 相关阅读:
    Java并发(三):重排序
    Java并发(六):volatile的实现原理
    Java并发(五):synchronized实现原理
    Java并发(一):多线程干货总结
    JDK源码学习笔记——String
    Java并发(二):Java内存模型
    JVM命令-java服务器故障排查
    vue之数据请求方式
    vue之菜单添加选择,知识:数据双向绑定、循环渲染、事件点击以及按键的点击
    Vue【第3章】:Vue常用指令二:事件和方法
  • 原文地址:https://www.cnblogs.com/aiweixiao/p/6671381.html
Copyright © 2011-2022 走看看