python-selenium并发执行测试用例(方法一 各模块每一条并发执行)

总执行代码:

# coding=utf-8
import unittest,os,time
import HTMLTestRunner
import threading
import sys
sys.path.append('C:/Users/Dell/Desktop/CARE/program')#使用编辑器,要指定当前目录,不然无法执行第20行代码


def creatsuite():
  casedir = []
  list = os.listdir(os.path.dirname(os.getcwd()))#获取当前路径的上一级目录的所有文件夹,这里可以改成绝对路径(要搜索的文件路径)
  for xx in list:
    if "baidu" in xx:
      casedir.append(xx)
  suite =[]
  for n in casedir:
    testunit = unittest.TestSuite()
    unittest.defaultTestLoader._top_level_dir = None

#(unittest.defaultTestLoader(): defaultTestLoader()类,通过该类下面的discover()方法可自动更具测试目录start_dir匹配查找测试用例文件(test*.py),

并将查找到的测试用例组装到测试套件,因此可以直接通过run()方法执行discover)

    discover = unittest.defaultTestLoader.discover(str(n),pattern='tet_*.py',top_level_dir=None) 

    for test_suite in discover:
      for test_case in test_suite:
        testunit.addTests(test_case)
    suite.append(testunit)
  return suite, casedir

def runcase(suite,casedir):
  lastPath = os.path.dirname(os.getcwd())#获取当前路径的上一级
  resultDir = lastPath+"\\run\\report\\" #报告存放路径
  now = time.strftime("%Y-%m-%d %H.%M.%S",time.localtime())
  filename = resultDir + now +" result.html"
  fp = file(filename, 'wb')
  proclist=[]
  s=0

  for i in suite:
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=str(casedir[s])+u'测试报告',description=u'用例执行情况:')
    proc = threading.Thread(target=runner.run,args=(i,))
    proclist.append(proc)
    s=s+1
  for proc in proclist:
    proc.start()
  for proc in proclist:
    proc.join()
  fp.close()

if __name__ == "__main__":
  runtmp=creatsuite()
  runcase(runtmp[0],runtmp[1])

 

描述: 使用这个总执行文件,可以多进程 同时开始每个模块的测试用例(每个模块同时一条接着一条执行)

 

posted @ 2017-09-08 09:24  凯宾斯基  阅读(7386)  评论(8编辑  收藏  举报