#coding=utf-8
''' Created on 2019-01-21
author: codeali
'''
import os
import unittest
import time
import logging
from lib import pathdeal
from lib import log
from lib import HTMLTestRunner
'''遍历Case目录下的所有case,将case中的所有方法添加到suite中'''
'''case命名规则:*Test.py'''
def createSuiteAll(caseDir='testcase'):
casePath = pathdeal.getSpecialPath(caseDir)
if (casePath):
# 构造测试用例容器
suite = unittest.TestSuite()
# 加载测试用例
discover = unittest.defaultTestLoader.discover(casePath, pattern='*Test.py', top_level_dir=None)
try:
for test_suite in discover:
for test_case in test_suite:
suite.addTests(test_case)
return suite
except:
print("\n用例加载失败:%s" % test_case)
return False
else:
return False
'''将一个case文件中的所有方法添加到suite中'''
def createSuite(caseFile="".join(os.path.splitext(os.path.basename(sys.argv[0]))), caseDir='testcase'):
casePath = pathdeal.getSpecialPath(caseDir)
if (casePath and caseFile):
suite = unittest.TestSuite()
test_suite = unittest.defaultTestLoader.discover(casePath, pattern=caseFile, top_level_dir=None)
for test_case in test_suite:
suite.addTests(test_case)
return suite
else:
return False
'''执行测试用例,并生成测试报告'''
def createReport(suite, reportTitle=u'新版APP学生端接口测试', reportDir='results'):
date_now = time.strftime("%Y-%m-%d.%H-%M-%S", time.localtime())
filePath = pathdeal.getSpecialPath(reportDir)
fname = os.path.splitext(os.path.basename(sys.argv[0]))[0]
filename = filePath + fname + '.' + date_now + '.html'
if (suite):
try:
fp = open(filename, 'wb')
'''定义测试报告'''
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=reportTitle, description="用例执行情况:")
runner.run(suite)
fp.close()
except TypeError:
print('生成测试报告失败')
else:
log.initLogging('logs')
logging.debug('测试用例执行失败,没有测试报告生成')
if __name__ == '__main__':
#createReport(createSuiteAll())
createReport(createSuite('loginTest.py'))
报告内容如下: