利用Python的unittest单元测试框架的discover方法批量执行脚本用例

1.在用Python自动化时,执行单个脚本用例那都是so easying当脚本用例不断地增多时,那就蒙蔽了,一个个来跑到什么时候才跑完,所以discover方法作用就出来,废话不多,小编直接上代码了,如有疑问,可以咨询小编

#!/usr/bin/python
# -*- coding: utf-8 -*-
from selenium import webdriver
import time,os
from selenium.webdriver.common.action_chains import ActionChains 
import pickle
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, re,os
import logging
import math 
from selenium.webdriver.support import expected_conditions as EC
import time
import HTMLTestRunner 
#time.strftime('%Y-%m-%d-%H-%M',time.localtime(tim.e.time()))
import compileall#将py文件编译成二进制的pyc文件
#compileall.compile_dir(r'H:/game')
#这样就把game目录,以及其子目录下的py文件编译为pyc文件了

case_dir = "C:\Python34\meizhu"

def creatsuitel():
testunit=unittest.TestSuite()#初始化一个测试套件
discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py",top_level_dir=None)

1.discover方法里面有三个参数:

-case_dir:这个是待执行用例的目录。

-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本。

-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。

2.discover加载到的用例是一个list集合,需要重新写入到一个list对象testcase里,这样就可以用unittest里面的TextTestRunner这里类的run方法去执行。

for test_suite in discover:

for meizhu in test_suite:
testunit.addTests(meizhu)
print(testunit)
return(testunit)

#利用for循环遍历匹配已test开头脚本文件,然后加载到测试套件中

#alltestnames = creatsuitel()
if __name__ == "__main__":
#runner = unittest.TextTestRunner()
now = time.strftime('%Y-%m-%d-%H-%M',time.localtime(time.time())) #输出当前时间
fp=open("result"+now+".html",'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'用例执行情况',description=u'报告:')
runner.run(creatsuitel())
fp.close()

你可能感兴趣的:(利用Python的unittest单元测试框架的discover方法批量执行脚本用例)