• CSV文件自动化(自定义参数)


     说明: 
    CSV 文件:cmd_list1.csv
    testcase:对应test case id
    function:对应test case的标题
    interfacenotes:对应bsp节点名称
    cmd:对应bsp命令
    needtest:【yes】执行这个case,【no】表示跳过不执行这个case
    var1:表示参数1
    var2:表示参数2
    loop:表示命令或case循环几次,当多条命令需要循环时,命令必须以;拼接。
    命令里[]表示参数占位符
    注意参数,如果是循环需要写 1 2,而不是12

     cmd1.csv

    testcase,function,interfacenotes,cmd,needtest,var1,var2,loop
    8.1.1.1,CPLD Version,cpld_version,cat /sys/devices/platform/soc/fd880000.i2c-pld/i2c-0/i2c-4/i2c-15/15-0060/cpld_version,no,,,
    8.1.1.2,Boad Version,board_version,cat /sys/devices/platform/soc/fd880000.i2c-pld/i2c-0/i2c-4/i2c-15/15-0060/board_version,yes,,,
    8.1.8.3,front panel fan led,fan_led,cat /sys/bus/i2c/devices/15-0060/fan_led,yes,green red off,,
    8.1.8.4,front panel power led,pwr1&2_led,cat /sys/devices/platform/soc/fd880000.i2c-pld/i2c-0/i2c-4/i2c-15/15-0060/pwr[]_led,yes,,1 2,
    8.1.8.5,front panel power led,pwr1&2_led,echo [] > /sys/bus/i2c/devices/15-0060/pwr[]_led1,yes,green red off,1 2,
    8.1.8.6,fan led,fan_led,echo [] > /sys/bus/i2c/devices/10-0066/fan1_led;cat /sys/bus/i2c/devices/10-0066/fan1_led,yes,red green off,,2

    
    
    
     
    #!/bin/bash
    #################################################################
    #    Copyrith (C) 2020 XXXX Ltd. All rights reserved.           #
    #                                                               #
    #   Author :xxxx                                                #
    #   Create Time : Jan 8,2020                                    #
    #   Applied Project:XXX                                         #
    #   How to Use:Copy the script into OS in /root,call this script#
    #################################################################
    cmd_list="cmd1.csv"
    cmd_fail_list="cmd_fail_list.csv"
    cmd_count=0
    cmd_skip=0
    cmd_pass=0
    cmd_fail=0
    foder_date=`date '+%Y%m%d'`
    file_date=`date '+%H%M'`
    
    getTestcase(){
        local tc=""
        tc=`echo $LINE |awk -F "," '{print $1}'`
        echo $tc
    }
    
    getFunction(){
        local fn=""
        fn=`echo $LINE |awk -F "," '{print $2}'`
        echo $fn
    }
    
    getInterface(){
        local ifc=""
        ifc=`echo $LINE |awk -F "," '{print $3}'`
        echo $ifc
    }
    getCmd(){
        local cmd=""
        cmd=`echo $LINE |awk -F "," '{print $4}'`
        echo $cmd
    
    }
    
    getNeedtest(){
        local ndt=""
        ndt=`echo $LINE |awk -F "," '{print $5}'`
        echo $ndt
    }
    
    getVar1(){
        local var1=""
        var1=`echo $LINE |awk -F "," '{print $6}'`
        echo $var1
    
    }
    getVar2(){
        local var2=""
        var2=`echo $LINE|awk -F "," '{print $7}'`
        echo $var2
    }
    
    getLoop(){
        local loop=""
        loop=`echo $LINE|awk -F "," '{print $8}'`
        echo $loop
    
    }
    cat $cmd_list|tail -n+2|while read LINE
    do
        cmd_tc=$(getTestcase "$LINE")
        cmd_fun=$(getFunction "$LINE")
        cmd_ifc=$(getInterface "$LINE")
        cmd_cli=$(getCmd "$LINE")
        cmd_ndt=$(getNeedtest "$LINE")
        cmd_var1=$(getVar1 "$LINE")
        cmd_var2=$(getVar2 "$LINE")
        cmd_loop=$(getLoop "$LINE")
    
        if [ -s $cmd_list ];then
                   if [[ -z "$cmd_tc" ]] || [[ -z "$cmd_cli" ]] || [[ -z "$cmd_ifc" ]];then
                       echo "column ${cmd_tc} ${cmd_cli} ${cmd_ifc} is requited"
                       exit
                   else
    
                cmd_count=$[$cmd_count+1]
                echo $cmd_count > cmd_count.log
                if [ ${cmd_ndt} == "yes" ];then
    
                    if [[ -n "$cmd_var1" ]] && [[ -n "$cmd_var2" ]];then
                        echo $cmd_cli >> all_cmd.log
    
                    #case1:two parameters var1 and var2
                        #setting (1 2) loop method
                        cmd1_pass=0
                        cmd1_fail=0
                        for v2 in $(seq 1 ${cmd_var2[@]})
                        #for v2 in `seq ${cmd_var2[@]}`
                        do
                            echo
                               for v1 in ${cmd_var1[@]}
                                #for v1 in `seq ${cmd_var1[@]}`
                                do
                                    #loop to insted with $v1 and $v2
                                    echo `sed 's/[]/'$v1'/1;s/[]/'$v2'/' all_cmd.log` >> tmp1_2.log
                                done
    
                        done
                        while read line
                        do
                            echo "#$line"
                            cmd=`eval $line`
                            if [[ $? -eq 0 ]];then  #一条case里的多条命令,小汇总summary,cmd1_pass+1,cmd1_fail+1,存到小变量里
                                    cmd1_pass=$((cmd1_pass+1))
                                    echo $cmd1_pass > cmd1_pass.log
                           else
                                    cmd1_fail=$((cmd1_fail+1))
                                    echo $cmd1_fail > cmd1_fail.log
                            fi
                            sleep 1
                        done < tmp1_2.log
                          if [[ $cmd1_fail == 0 ]];then
    
                           cmd1_fail=0
                        else
    
                           cmd1_fail=`cat cmd1_fail.log`
    
                        fi
                        if [[ $cmd1_fail -eq 0 ]];then   #判断整个case里的fail和pass数量,cmd_pass,cmd_fail,如果,小总结cmd1_fail为0,表示整个case是pass
                            cmd_pass=$((cmd_pass+1))
                            echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [PASS]"else
                            echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [Fail]"
                            cmd_fail=$((cmd_fail+1))
                            cmd_fail_info=${cmd_tc}","${cmd_fun}","${cmd_ifc}","${cmd_cli}","${cmd_ndt}
                            echo ${cmd_fail_info} >> $file_date$cmd_fail_list
                            echo "#${cmd_cli}" >> $file_date$cmd_fail_list
                            eval ${cmd_cli} 2>> $file_date$cmd_fail_list
                         fi
    
                    #case2:one parameters var1
                            elif [[ -n "$cmd_var1" ]] && [[ ! -n $cmd_loop ]];then
                            cmd2_pass=0
                            cmd2_fail=0
                        for v1 in ${cmd_var1[@]}
                        do
                            echo "#${cmd_cli/[]/$v1}"
                            cmd=`eval ${cmd_cli/[]/$v}`
                           if [[ $? -eq 0 ]];then
                                    cmd2_pass=$[$cmd2_pass+1]
                                    echo $cmd2_pass > cmd2_pass.log
                           else
                                    cmd2_fail=$[$cmd2_fail+1]
                                    echo $cmd2_fail > cmd2_fail.log
                          fi
                        done
                        if [[ $cmd2_fail == 0 ]];then
    
                           cmd2_fail=0
                        else
    
                           cmd2_fail=`cat cmd2_fail.log`
    
                        fi
                         if [[ $cmd2_fail -eq 0 ]];then
    
                              cmd_pass=$((cmd_pass+1))
                              echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [PASS]"
                              #echo $cmd_pass >cmd_pass.log
                        else
                              cmd_fail=$((cmd_fail+1))
                              echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [Fail]"
                              cmd_fail_info=${cmd_tc}","${cmd_fun}","${cmd_ifc}","${cmd_cli}","${cmd_ndt}
                              echo ${cmd_fail_info} >> $file_date$cmd_fail_list
                              echo "#${cmd_cli}" >> $file_date$cmd_fail_list
                              eval ${cmd_cli} 2>> $file_date$cmd_fail_list
                         fi
    
    
                    #case3:one parameters var2
                            elif [[ -n "$cmd_var2" ]] && [[ ! -n $cmd_loop ]];then
                            cmd3_pass=0
                            cmd3_fail=0
                        for v2 in ${cmd_var2[@]}
                        do
                            echo "#${cmd_cli/[]/$v2}"
                            cmd=`eval ${cmd_cli/[]/$v2}`
                            if [[ $? -eq 0 ]];then
                                    cmd3_pass=$[$cmd3_pass+1]
                                    echo $cmd3_pass > cmd3_pass.log
                           else
                                    cmd3_fail=$[$cmd3_fail+1]
                                    echo $cmd3_fail > cmd3_fail.log
                            fi
                        done
                        if [[ $cmd3_fail == 0 ]];then
    
                           cmd3_fail=0
                        else
    
                           cmd3_fail=`cat cmd3_fail.log`
    
                        fi
                           if [[ $cmd3_fail -eq 0 ]];then
    
                            cmd_pass=$((cmd_pass+1))
                            echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [PASS]"else
                           cmd_fail=$((cmd_fail+1))
                           echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [Fail]"
                           cmd_fail_info=${cmd_tc}","${cmd_fun}","${cmd_ifc}","${cmd_cli}","${cmd_ndt}
                           echo ${cmd_fail_info} >> $file_date$cmd_fail_list
                           echo "#${cmd_cli}" >> $file_date$cmd_fail_list
                           eval ${cmd_cli} 2>> $file_date$cmd_fail_list
                          fi
                    #case4:one parameters var1 and loop
                            elif [[ -n "$cmd_var1" ]]&&[[ -n "$cmd_loop" ]];then
                          cmd4_pass=0
                          cmd4_fail=0
                       # for((lp=1;lp<=${cmd_loop};lp++))
                         for lp in `seq ${cmd_loop}`
                           do
                                echo
                                for v1 in ${cmd_var1[@]}
                                do
                                    echo ${cmd_cli//[]/$v1}|awk -F ';' '{for(i=1;i<=NF;i++) print$i}' >>tmp1_loop.log
                               done
    
    
                           done
    
                              while read line
                              do
    
                                echo "#$line"
                                cmd=`eval $line`
                               if [[ $? -eq 0 ]];then
                                    cmd4_pass=$[$cmd4_pass+1]
                                    echo $cmd4_pass > cmd4_pass.log
                              else
                                    cmd4_fail=$[$cmd4_fail+1]
                                    echo $cmd4_fail > cmd4_fail.log
                               fi
                               sleep 1
                              done < tmp1_loop.log
                              if [[ $cmd4_fail == 0 ]];then
    
                                 cmd4_fail=0
                             else
    
                                cmd4_fail=`cat cmd4_fail.log`
    
                              fi
                              if [[ $cmd4_fail -eq 0 ]];then
    
                                   cmd_pass=$((cmd_pass+1))
                                   echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [PASS]"else
                                   cmd_fail=$((cmd_fail+1))
                                   echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [Fail]"
                                   cmd_fail_info=${cmd_tc}","${cmd_fun}","${cmd_ifc}","${cmd_cli}","${cmd_ndt}
                                   echo ${cmd_fail_info} >> $file_date$cmd_fail_list
                                   echo "#${cmd_cli}" >> $file_date$cmd_fail_list
                                   eval ${cmd_cli} 2>> $file_date$cmd_fail_list
                              fi
                    #case5:no parameters var2 and loop
                    elif [[ -n "$cmd_var2" ]]&&[[ -n "$cmd_loop" ]];then
                        cmd5_pass=0
                        cmd5_fail=0
                        #for((lp=1;lp<=${cmd_loop};lp++))
    
                        for lp in $(seq 1 1 ${cmd_loop})
                        do
                            echo
                            for v2 in ${cmd_var2[@]}
                            do
                                echo ${cmd_cli//[]/$v2}|awk -F ';' '{for(i=1;i<=NF;i++) print$i}' >>tmp2_loop.log
    
                            done
                        done
                        while read line
                        do
                           echo "#$line"
                           cmd=`eval $line`
                           if [[ $? -eq 0 ]];then
                                    cmd5_pass=$[$cmd5_pass+1]
                                    echo $cmd5_pass > cmd5_pass.log
                           else
                                    cmd5_fail=$[$cmd5_fail+1]
                                    echo $cmd5_fail > cmd5_fail.log
                            fi
                            sleep 1
                        done <tmp2_loop.log
                        if [[ $cmd5_fail == 0 ]];then
    
                           cmd5_fail=0
                        else
    
                           cmd5_fail=`cat cmd5_fail.log`
    
                        fi
                            if [[ $cmd5_fail -eq 0 ]];then
    
                                   cmd_pass=$((cmd_pass+1))
                                   echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [PASS]"
                                   echo $cmd_pass>cmd_pass.log
    
                            else
                                   cmd_fail=$((cmd_fail+1))
                                   echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [Fail]"
                                   echo $cmd_fail>cmd_fail.log
                                   cmd_fail_info=${cmd_tc}","${cmd_fun}","${cmd_ifc}","${cmd_cli}","${cmd_ndt}
                                   echo ${cmd_fail_info} >> $file_date$cmd_fail_list
                                   echo "#${cmd_cli}" >> $file_date$cmd_fail_list
                                    eval ${cmd_cli} 2>> $file_date$cmd_fail_list
                             fi
    
                        else
                                    echo "#${cmd_cli}"
                                    cmd=`eval ${cmd_cli}`
                                    if [[ $? -eq 0 ]];then
                                            cmd_pass=$[$cmd_pass+1]
                                        echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [PASS]"
                                    else
                                            cmd_fail=$[$cmd_fail+1]
                                            echo "Test cmd: "${cmd_tc}" "${cmd_ifc}" -- [Fail]"
                                            cmd_fail_info=${cmd_tc}","${cmd_fun}","${cmd_ifc}","${cmd_cli}","${cmd_ndt}
                                            echo ${cmd_fail_info} >> $file_date$cmd_fail_list
                                            echo "#${cmd_cli}" >> $file_date$cmd_fail_list
                                            eval ${cmd_cli} 2>> $file_date$cmd_fail_list
                                    fi
                            fi
    
                else
                    cmd_skip=$[$cmd_skip+1]
                    echo $cmd_skip >cmd_skip.log
    
                fi
            fi
    
        else
    
            echo "file $cmd_list is empty"
            exit
        fi
    
    
    echo $cmd_skip > cmd_skip.log
    echo $cmd_pass > cmd_pass.log
    echo $cmd_fail > cmd_fail.log
    done
    cmd_skip=`cat cmd_skip.log`
    cmd_pass=`cat cmd_pass.log`
    cmd_count=`cat cmd_count.log`
    cmd_fail=`cat cmd_fail.log`
    #增加判断,没有fail,pass,skip文件时,设置这些值为0,否则,读里面的值。如果不增加判断,会提示文件找不到。
    if [[ $cmd_skip == 0 ]];then cmd_skip=0 else cmd_skip=`cat cmd_skip.log` fi if [[ $cmd_fail == 0 ]];then cmd_fail=0 else cmd_fail=`cat cmd_fail.log` fi if [[ $cmd_pass == 0 ]];then cmd_pass=0 else cmd_pass=`cat cmd_pass.log` fi echo "=================================================================" echo "Total cmd:" $cmd_count echo "Test pass:" $cmd_pass echo "Test fail:" $cmd_fail echo "Test skip:" $cmd_skip echo "==================================================================" echo "Fail log " #cat $file_date$cmd_fail_list #备份fail的日志文件到日期文件夹下,每次执行的日志以时间戳为标记区分。 if [ ! -d $foder_date ];then #判断文件夹是否存在 mkdir $foder_date else if [ ! -f $file_date$cmd_fail_list ];then #判断文件是否存在 touch ./$foder_date/$file_date$cmd_fail_list else mv *$cmd_fail_list ./$foder_date fi fi ./arg.sh #脚本执行完,调用这个脚本去删除临时文件
    
    
    

    运行效果:
    
    
    
     
  • 相关阅读:
    Selenium定位iframe动态ID
    selenium.webdriver元素定位失败
    pip 安装 request 失败
    postman 参数传递
    阿里云ECS服务器centos6.x安装docker问题盘点
    用户体验测试
    十大百度搜索技巧
    软件测试的目的与原则
    测试bug级别定义
    医药下乡管理系统(ssm,mysql)
  • 原文地址:https://www.cnblogs.com/maisha/p/12186222.html
Copyright © 2020-2023  润新知