export PATH=$PATH:$ANDROID_HOME/platform-tools/ #導(dǎo)入環(huán)境變量
./gradlew clean assembleRelease buildOfficial
#!/bin/bash #用這個(gè)命令解釋器
time=10 #變量
i=5;
timer=6999 #這個(gè)構(gòu)建最大運(yùn)行時(shí)間:ms
usecaseFilename2=testcasepre #運(yùn)行測(cè)試用例前的準(zhǔn)備工作(用例)
usecaseFilename="testcaseMedicalRecord" #運(yùn)行的測(cè)試用例
devicenamelast=
deleteXls=true
app=~/.jenkins/workspace/Medclips_AutoVersion_Release/app/build/channels/medchart_for_android_001.apk #要測(cè)試的軟件
testApp=~/.jenkins/workspace/Medclips_AutoTest_Release/build/channels/medclips_android_001_zipalign.apk #測(cè)試軟件
if[ -f true.txt ];then #如果true.tex存在,則刪除這個(gè)文件
rm true.txt
fi
echo $EXECUTOR_NUMBER #打印EXECUTOR_NUMBER
#沒有設(shè)備時(shí)蔚润,重啟server殿漠;BUILD_NUMBER是16的倍數(shù)時(shí)犀暑,重啟server帽揪、手機(jī)設(shè)備
sleep100#等待100ms
./restart-server.sh $time $i #執(zhí)行這個(gè)腳本
if[ $[$BUILD_NUMBER%10] -eq0] ;then #如果構(gòu)建號(hào)BUILD_NUMBER可以整除10戏罢,則執(zhí)行./restart-server-devices.sh文件
./restart-server-devices.sh $time $i $ANDROID_HOME $app $testApp
fi
j=5
device_list=$(adb devices) #device_list=現(xiàn)在連接電腦的測(cè)試設(shè)備
devicename=$(echo $device_list | cut -d' '-f$j) #獲得device_name# cut -d'分隔字符' -f fields <==用于有特定分隔字符-f:依據(jù)-d的分隔字符將一段信息分割成為數(shù)段屋谭,用-f取出第幾段的意思;
devicestatus=$(echo $device_list | cut -d' '-f$[$j+1]) #獲得devicestatus
while["$devicename"!=""] #當(dāng)設(shè)備名不為空并且設(shè)備狀態(tài)不為下線時(shí)
do
if["$devicestatus"!="offline"];then
{
adb -s $devicename push $WORKSPACE/testdata/ /mnt/sdcard/ #將$WORKSPACE/testdata/拷貝到手機(jī)/mnt/sdcard/上
devicenamelast=$devicename; #定義devicenamelast
adb-s $devicenamelastshell am instrument -e class com.xsltest.framework.MedSuite-e xmlname $usecaseFilename2-w com.xsltest.framework/com.xsltest.framework.MyTestRunner
#在手機(jī)上運(yùn)行usecaseFilename2.xml文件中的用例
adb-s $devicenamelastshell am instrument -e class com.xsltest.testcase.testother.deleteCase-w com.xsltest.framework/com.xsltest.framework.MyTestRunner
#在手機(jī)上運(yùn)行deleteCase用例
}&
fi
j=$[$j+2]
devicename=$(echo $device_list | cut -d' '-f$j) #如果有多個(gè)設(shè)備龟糕,獲取下面的設(shè)備名
devicestatus=$(echo $device_list | cut -d' '-f$[$j+1])
done
wait
while[ ! -f $app ];do #如果-f $app是常規(guī)文件則為真
{
sleep10
}
done
#安裝測(cè)試版本桐磁、被測(cè)版本,執(zhí)行用例
chmod 777 run-usecases.sh #修改run-usecases.sh的執(zhí)行權(quán)限
{
./run-usecases.sh $time $i $WORKSPACE $usecaseFilename $app $testApp $deleteXls
#運(yùn)行這個(gè)run-usecases.sh文件
}&
#判斷usecase是否運(yùn)行成功讲岁,成功后獲取結(jié)果我擂;或者超時(shí)后結(jié)束運(yùn)行,并獲取結(jié)果
chmod777usecase-results.sh
{
./usecase-results.sh $time $i $WORKSPACE $timer
#運(yùn)行這個(gè)run-usecases.sh文件
}&
wait
以上是平時(shí)用到的一個(gè)shell腳本缓艳,其中的幾個(gè)shell腳本學(xué)習(xí):
1.if ... else 語(yǔ)句的語(yǔ)法:
if [ expression ]
then
Statement(s) to be executed if expression is true
fi
如果 expression 返回 true校摩,then 后邊的語(yǔ)句將會(huì)被執(zhí)行;如果返回 false阶淘,不會(huì)執(zhí)行任何語(yǔ)句衙吩。
最后必須以 fi 來結(jié)尾閉合 if,fi 就是 if 倒過來拼寫溪窒,后面也會(huì)遇見坤塞。
注意:expression 和方括號(hào)([ ])之間必須有空格,否則會(huì)有語(yǔ)法錯(cuò)誤霉猛。
if ... else ... fi 語(yǔ)句的語(yǔ)法:
if [ expression ]
then
Statement(s) to be executed if expression is true
else
Statement(s) to be executed if expression is not true
fi
如果 expression 返回 true尺锚,那么 then 后邊的語(yǔ)句將會(huì)被執(zhí)行;否則惜浅,執(zhí)行 else 后邊的語(yǔ)句瘫辩。
2.-f filename 如果 filename為常規(guī)文件,則為真
-e filename 如果 filename存在,則為真
-d filename 如果 filename為目錄伐厌,則為真
3.echo
echo 字符串 輸出字符串或變量的值承绸,默認(rèn)輸出后會(huì)換行,且不會(huì)識(shí)別特殊字符
echo -n 字符串 輸出字符串或變量的值挣轨,不換行
echo -e 字符串 輸出字符串或變量的值军熏,在遇到 特殊字符時(shí)需轉(zhuǎn)換,比如\n代表?yè)Q行
4.$
$var 取變量值
5.while
while[ expression ]
do
Statement(s) to be executed if expression is true
done
只要條件判斷式為真就一直執(zhí)行