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