多线程执行测试用例

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

posted @ 2017-09-14 15:44  Silence&QH  阅读(1845)  评论(0编辑  收藏  举报