对Linux 之 WC命令进行测试【要求实现自动化测试】
wc命令是linux中自带命令,这里,我们假设这个命令是开发人员实现的一个程序。这个程序在执行时,有如下四种执行情况
wc –c文件或者目录
wc –C文件或者目录
wc--help 文件或者目录
wc--version 文件或者目录
********************************************
【解决答案】
前期准备:
mv /etc/inittab /root/inittab.bak
cd /root
wc -c inittab>Case_001.res
wc -C inittab 2>Case_002.res
wc --help inittab>Case_003.res
wc --version inittab>Case_004.res
这样我们就准备了预期结果
*******************
准备要读取的测试用例文件TestCase.file
Case_ID Option directory
Case_001 -c /root/inittab.bak
Case_002 -C /root/inittab.bak
Case_003 --help /root/inittab.bak
Case_004 --version /root/inittab.bak
**************************************
编写的测试脚本如下:
【main.sh】
1#!/bin/sh
2. ./myGetResult.sh
3. ./myCallCmd.sh
4tc_file=$1
5[ -s $tc_file ]
6if [ $? -eq 0 ];then
7 lineNO=0
8 while read case_id option directory
9 do
10 lineNO=`expr $lineNO + 1`
11 if [ "$lineNO" -gt 1 ];then
12 CallCmd $case_id $option $directory;
13 ret=$?
14 if [ $ret -eq 0 ];then
15 GetResult $case_id 0
16 else
17 GetResult $case_id 1
18 fi
19 else
20 continue
21 fi
22 done<$tc_file
23else
24 echo "The file you enter is empty!"
25 exit 1
26fi
【myCallCmd】
1#!/bin/sh
2CallCmd()
3{
4 case_id=$1
5 ption=$2
6 directory=$3
7 wc $option $directory>$case_id.out 2>$case_id.err
8 return $?
9}
【myGetResult】
1#!/bin/sh
2GetResult()
3{
4 case_id=$1
5 isnormal=$2
6 if [ $isnormal -eq 0 ];then
7 diff $case_id.out $case_id.res
8 else
9 diff $case_id.err $case_id.res
10 fi
11 ret=$?
12 if [ $ret -eq 0 ];then
13 echo "$1---->pass"
14 else
15 echo "$1---->fail"
16 fi
17}
*******************************
执行结果./main.sh TestCase.file
Case_001---->pass
Case_002---->pass
Case_003---->pass
Case_004---->pass
因为我们准备的预期结果是正确的,
而且实际结果也是正确的[因为开发的WC是正确的]
所以都pass。
注意diff命令: 写的不错,思路清晰,学习了:victory:
main.sh 中14-18行 可以直接写成GetResult $case_id $ret
14 if [ $ret -eq 0 ];then
15 GetResult $case_id 0
16 else
17 GetResult $case_id 1
18 fi :) 多谢指出
页:
[1]