利用Python的unittest單元測試框架的discover方法批量執行腳本用例


1.在用Python自動化時,執行單個腳本用例那都是so easying當腳本用例不斷地增多時,那就蒙蔽了,一個個來跑到什么時候才跑完,所以discover方法作用就出來,廢話不多,小編直接上代碼了,如有疑問,可以咨詢小編

 

#!/usr/bin/python
# -*- coding: utf-8 -*-
from selenium import webdriver
import time,os
from selenium.webdriver.common.action_chains import ActionChains
import pickle
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, re,os
import logging
import math
from selenium.webdriver.support import expected_conditions as EC
import time
import HTMLTestRunner
#time.strftime('%Y-%m-%d-%H-%M',time.localtime(tim.e.time()))
import compileall#將py文件編譯成二進制的pyc文件
#compileall.compile_dir(r'H:/game')
#這樣就把game目錄,以及其子目錄下的py文件編譯為pyc文件了

case_dir = "C:\Python34\meizhu"

def creatsuitel():
testunit=unittest.TestSuite()#初始化一個測試套件
discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py",top_level_dir=None)

"""

1.discover方法里面有三個參數:

-case_dir:這個是待執行用例的目錄。

-pattern:這個是匹配腳本名稱的規則,test*.py意思是匹配test開頭的所有腳本。

-top_level_dir:這個是頂層目錄的名稱,一般默認等於None就行了。

2.discover加載到的用例是一個list集合,需要重新寫入到一個list對象testcase里,這樣就可以用unittest里面的TextTestRunner這里類的run方法去執行。

"""
for test_suite in discover:

for meizhu in test_suite:
testunit.addTests(meizhu)
print(testunit)
return(testunit)

#利用for循環遍歷匹配已test開頭腳本文件,然后加載到測試套件中

#alltestnames = creatsuitel()
if __name__ == "__main__":
#runner = unittest.TextTestRunner()
now = time.strftime('%Y-%m-%d-%H-%M',time.localtime(time.time())) #輸出當前時間
fp=open("result"+now+".html",'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'用例執行情況',description=u'報告:')
runner.run(creatsuitel())
fp.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM