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框架那样经过简单的配置后,执行多线程的测试用例