为了更对得起“自动化测试”的名号,我们可以设置定时任务,使我们自动化脚本在某个时间点自动运行脚本,这样就可以让测试在夜间进行,减少了时间成本。通过程序来控制test case在什么时候执行是最简单的方式了。
借用http://blog.csdn.net/liujingqiu/article/details/50518776关于HTMLTestResult的脚本,然后写SetTime_AutoRun.py来实现定时执行任务。
SetTime_AutoRun.py脚本如下:
import unittest
import HTMLTestRunner
import os
import time
listaa='C:\Python34\test_case' #设置脚本所在的绝对路径
def createsuitel():
testunit=unittest.TestSuite()
discover=unittest.defaultTestLoader.discover(listaa, pattern='UnitTestHtml_*.py', top_level_dir=None)
for test_suite in discover:
for test_case in test_suite:
testunit.addTests(test_case)
print (testunit)
return testunit
alltestnames=createsuitel()
#now=time.strftime('%Y-%m-%M-%H_%M_%S',time.localtime(time.time())) #时间格式有错误
now=time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time())) #设置时间格式
fp = open(now+'result.html','wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='test result',description=u'result:') #调用HTMLRestRunner
k=1
while k<2:
timing=time.strftime('%H_%M',time.localtime(time.time()))
if timing == '17_35': #17_35指17:35,这个可以根据需要设定时间
print ('start to run scripts')
runner.run(alltestnames) #运行所有的case
print ('Finish runing scripts')
break
else:
time.sleep(3)
print (timing)
fp.close()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
F5,运行得到:
1)pythonIDLE 如图所示:
从上图可以看到17_34还没有到我们设置的时间点17_35,于是会等待。
2)C:Python34 路径下,有Result.html如图:
2016-03-34-17_34_59result.html即为我们这次的测试result.html
3)打开上述文件得到如图所示:
上面的三个结果截图,即为运行后得到的结果。这里偷懒, 其中使用pattern=’UnitTestHtml_*.py’, 采用的是不同文件名的.py脚本,但是里面内容是相同的,于是同样的,得到了6个case的结果。
附:
1.pattern=’UnitTestHtml_*.py’ 表示在当前目录下,文件名为UnitTestHtml_*.py的脚本都会被批量执行。
在实施过程中,遇到的issue:
1.第一次输出,在C:Python34目录下的 2016-03-34-17_34_59result.html的文件大小为0kb,这是因为忘记加上fp.close()了。
2.以上脚本还有点小问题我们得到的2016-03-34-17_34_59result.html文件名,可以看到文件名中的设置时间没有正确。根据以下的修改,再次运行,显示正确。
脚本改动如下:
以前的脚本:
now=time.strftime('%Y-%m-%M-%H_%M_%S',time.localtime(time.time()))
改动后的脚本:
now=time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time())) #设置时间格式
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
就这样使用脚本完成了定时控制任务,实现定时自动化测试。