初尝bat脚本

上一篇 / 下一篇  2020-03-25 10:47:03 / 个人分类:bat脚本

因项目自动测试需要,实现方案想到了用bat解决,所以初步尝试bat脚本测试。

(对bat脚本一窍不通,通过网上找知识点,慢慢学起来用。花了一些时间,书到用时方恨少就是此次的心情,还是要抓紧啃知识)

 

本次脚本想要实现的功能:

运行bat脚本,bat脚本能实现链接设备(adb),并执行monkeyrunner自动化测试

要求:

1.一直循环测试,测试次数暂时没做限制

2.每次运行monkeyrunner命令时,能再重新打开一个新的窗口,然后新窗口的命令执行结束,才会打开另一个新窗口进行测试

3.把脚本的运行log保存下来,作为测试数据


测试准备:

1.monkeyrunner环境

2.创建一个test.py的py文件

脚本内容如下:

importtime
importos

forninrange(5):
print("This time is "+ str(n) +"times.")
f ="F:\\test20200325.txt"
f = open(f,'a')
f.write(
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) +"This time is "+ str(n) +"times."+'\n')
f.close()
time.sleep(1.0)


本次的bat脚本有两种版本:

1.不限循环次数的版本

2.有限循环次数的版本


不限循环次数的版本,命名为Infiniteloop.bat

该bat功能描述:运行该bat脚本后会记录开始测试时间到txt文件内,执行monkeyrunner命令时是新打开的窗口执行完后关闭,延时两秒后会再打开一个新的窗口再进行新一轮的执行。一直循环。

@echo off

:NOCONNECTED

echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% >> F:\test20200325.txt

start /w cmd /c monkeyrunner E:\exercise\test.py

choice /t 2 /d y /n >nul

goto NOCONNECTED

pause

 

有限循环次数的版本,命名为:Finitecycle.bat

该bat功能描述:

@echo off

echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% >> F:\test20200325.txt

for /l %%c in (1 1 10) do (

start /w cmd /c monkeyrunner E:\exercise\test.py

choice /t 2 /d y /n >nul

echo  this is %%c times

)


写这个脚本中遇到的问题记录:

1.“@”符号:该符号的作用是让执行窗口中不显示它后面这一行的命令本身

2.“>>”

3.echo为回显,反馈的意思。它其实是一个开关命令,及两种状态:打开/关闭

echo on:打开回显,运行bat时,echo on本身,及后面的命令都会显示在命令窗口上

echo off:关闭回显,所以运行bat时,在命令行窗口看不到后面执行的命令。如果加上@,则连“echo off”本身也不会回显,像本次bat脚本开头写的“@echo off

还有就是可以直接编辑文本文件,这个功能暂时没用到。

4.:(标签)和goto(跳转)

5.因为想要bat脚本实现当要执行monkeyrunner命令时,能重新打开一个窗口,并等这个新开的窗口中的命令执行完了,再执行下一次的循环。也因为真的不懂bat脚本知识,所以网上找了很久。边找边测试,算是有点眉目了。

以下几个是在这个找的过程中,经过试出来的实际现象与网上写的现象不一致或者完全相反的,先记录一下。因为手上还有任务要完成,这些放着后面再慢慢研究吧(希望是一周内)

cmd /k start

试了一下的实际效果为:命令会打开新窗口,新窗口执行完后不会关闭,旧的窗口的执行命令就退出来了(窗口未关闭);

cmd /c start

试了一下的实际效果为:命令会打开新窗口,新窗口执行完不会关闭,旧的窗口的执行命令也会继续执行下去,然后会有新的窗口一直冒出来

2020.03.30更新笔记:

使用“cmd /c monkeyrunner E:\exercise\test.py”测试了一下无限循环的,原来的窗口不会关闭,会一直循环下去

去掉无限循环,只执行一次,窗口执行完就关闭

于是我这么理解的,无限循环的版本下,如果每执行一次窗口被关闭,本来就一个窗口,肯定不能关闭。于是用有限次数的循环验证了以下,确实是等循环次数走完了再关闭窗口的

start cmd /c

试了一下的实际效果为:窗口执行完一轮,就停止了

2020.03.30更新笔记:

无限循环的前提下,每一轮循环都会新打开一个窗口(并不是新窗口的命令执行完才打开下一个窗口,新打开的窗口相互独立执行),执行完关闭新窗口

只执行一次的前提下,新旧窗口执行完各自关闭

start cmd /k

试了一下的实际效果为:窗口会执行完一轮又一轮,不会跳出新窗口,命令也不会停止执行

2020.03.30更新笔记:

无限循环的前提下,每一轮循环都会新打开一个窗口(并不是新窗口的命令执行完才打开下一个窗口,新打开的窗口相互独立执行),执行完关闭新窗口

只执行一次的前提下,新窗口执行完退出命令行不关闭,旧窗口执行完关闭

start /w cmd /c

这个就是本次写的,新的窗口执行完关闭了,才会打开新的一个窗口执行

6.echo时间格式

本次写的脚本中,输出的时间语句是“echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% ”为什么是这样写呢?

怪我真的菜,所以找了一篇博文:https://blog.csdn.net/cateatapple/article/details/51984718,这篇文章写的挺清楚的。

2020.03.30更新:

1.我是搬运工,找到了一篇对bat常用知识点归纳得还不错的文章:

第一篇:bat常用命令教程

第二篇:Bat详细手册

对某个命令不清楚用法时,可以打开cmd窗口查询,第二篇文章有讲到

2.对于上次更新的第五点,花了一些功夫验证:

cmd /c:执行字符串指定的命令然后终止

cmd /k:执行字符串指定的命令但保留

start:启动单独的“命令提示符”窗口来运行制定程序或命令,执行完退出命令行,不关闭窗口,但原本的窗口会关闭

start /b:启动应用程序,但不创建新窗口。即在原本的窗口执行程序

start /w:打开一个新窗口等待某个程序执行完毕

所以:

start cmd:表示打开一个新窗口,对新窗口做的动作

cmd start:表示打开一个新窗口,对旧窗口做的动作。如start /w cmd /c表示打开一个新窗口等新窗口执行完后自动关闭,再打开另一个新的窗口



TAG:

奔跑的兔子呀的个人空间 引用 删除 奔跑的兔子呀   /   2020-03-26 20:06:36
原帖由applepen于2020-03-25 15:57:26发表
写的挺好,加油。

谢谢
applepen的个人空间 引用 删除 applepen   /   2020-03-25 15:57:26
写的挺好,加油。
 

评分:0

我来说两句

我的栏目

日历

« 2024-03-20  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 2170
  • 日志数: 1
  • 建立时间: 2020-02-15
  • 更新时间: 2020-05-24

RSS订阅

Open Toolbar