標籤:selenium iss .net auto ams dir 控制 程式 沒有
為了更對得起“自動化測試”的名號,我們可以設定定時任務,使我們自動化指令碼在某個時間點自動運行指令碼,這樣就可以讓測試在夜間進行,減少了時間成本。通過程式來控制test case在什麼時候執行是最簡單的方式了。
借用http://blog.csdn.net/liujingqiu/article/details/50518776關於HTMLTestResult的指令碼,然後寫SetTime_AutoRun.py來實現定時執行任務。
SetTime_AutoRun.py指令碼如下:
import unittestimport HTMLTestRunnerimport osimport timelistaa=‘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 testunitalltestnames=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:‘) #調用HTMLRestRunnerk=1while 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())) #設定時間格式
就這樣使用指令碼完成了定時控制任務,實現定時自動化測試。
Selenium+WebDriver+Python 定時控制任務