python提供了兩個模塊來實現多線程thread 和threading ,thread 不支持守護線程,當主線程退出后,所以的子線程不管它們是否在工作,都會被強行退出。在threading 得到了彌補,所以我們應該盡量使用threading
下面看一個用多線程技術執行測試用例,實現操作多個瀏覽器的例子
#coding=utf-8
import threading
from selenium import webdriver
from time import ctime,sleep
#測試用例
def test_baidu(browser,search):
print('start:%s' % ctime)
print('browser:%s '% browser)
if browser=="ie":
driver=webdriver.Ie()
elif browser=="chrome":
driver=webdriver.Chrome()
elif browser=="ff":
driver=webdriver.Firefox()
else:
print("browserde only ie /ff/ chrome")
driver.get('http://www.baidu.com')
driver.find_element_by_id("kw").send_keys(search)
driver.find_element_by_id("su").click()
sleep(2)
driver.quit()
if __name__=='__main__':
#指定參數(指定瀏覽器與百度搜索內容)
lists={'chrome':'thraeding','ie':'webdriver','ff':'python'}
threads=[]
file=range(len(lists))
#創建線程
for browser,search in lists.items():
t=threading.Thread(target=test_baidu,args=(browser,search))
threads.append(t)
#啟動線程
for t in file:
threads[t].start()
for t in file:
threads[t].join()
print('end:%s' % ctime())
執行結果如下圖:

首先,使用threading,首先要引入threading;
其次,創建lists字典,對瀏覽器與搜索的內容進行參數化,通過多線程來運行test_baidu()的測試用例; 最后,在執行用例前使用多重if來判斷通過那個瀏覽器運行測試用例,並通過百度搜索搜索對應的關鍵 字;
注意:
unittest框架不支持多線程技術,不能想Java的testNG框架那樣經過簡單的配置后,執行多線程的測試用例
