主要通过导入HTMLTestRunner模块来执行测试用例,可以产生html格式的测试报告。
HTMLTestRunner下载
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
下载完成后,将下载的文件保存到C盘的\Python27\Lib目录下。
- 使用TestLoader运行测试用例, TestLoader也包含了不同的load方式,这里主要讲以下两种:
1) unittest.defaultTestLoader.discover 方法:首先,先创建一个运行测试用例的脚本run.py, 目的是要执行/src/test_case/ 目录下所有以“test”开头的测试用例,如下是代码实现。而这种方法只能按照一个pattern在test_case目录下搜索所有符合pattern的test module 进行测试。此种方法灵活行较差。
import unittest,time,HTMLTestRunner,sys
sys.path.append("../..")
from config.globalparameter import test_case_path
'''
build test suite, run test
'''
# build test set, which includes all src/test_case/test_xx.py files
suite = unittest.defaultTestLoader.discover(start_dir=test_case_path,pattern='test*.py')
#run test
if __name__=="__main__":
report_name= "alltests_"
report = report_name+"Report.html"
fb = open(report,'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fb,
title='Test Report',
description='Test Case Running Status:'
)
runner.run(suite)
fb.close()
2)unittest.TestLoader().LoadTestsFromModule()方法:通过传参指定一个test module执行测试
//
import unittest,time,sys
from HTMLTestRunner import HTMLTestRunner
sys.path.append("../..")
report_name = 'test_report.html'
def run(suite):
# the test report path
fp = open(report_name, 'wb')
# define the test report
runner = HTMLTestRunner(stream=fp,
title='Test Report',
description= 'Test Case Running Status: ')
runner.run(suite) #run test
fp.close() #close test report
#run test
if __name__=="__main__":
import src.test_case.test_viewpage as test_vp
#suite1 = unittest.TestLoader().loadTestsFromTestCase(test_vp.TestViewPage)
suite1 = unittest.TestLoader().loadTestsFromModule(test_vp) # both two suites can be used to load the specified test module
suite = unittest.TestSuite([suite1])
run(suite)
2. 使用TestSuite 执行测试用例, 在前面写过的一个测试脚本TestViewPage.py, 其中只写了一个测试用例 test_viewpage_report, 当然一个测试脚本可以包含多个测试用例,假设此时又在其中增加了一个测试用例test_viewpage_monitor, 如下脚本所示,可以通过Test Suite().addTest()方法逐个将两个或几个测试用例添加到Suite中,再执行测试
//
import unittest,time,sys
from HTMLTestRunner import HTMLTestRunner
sys.path.append("../..")
from src.test_case.test_viewpage_run_by_testloader import TestViewPage
report_name = 'test_report.html'
#run test
if __name__ == '__main__':
#unittest.main()
test_vr = TestViewPage("test_viewpage_report")
test_sm = TestViewPage("test_viewpage_monitor")
testunit = unittest.TestSuite()
testunit.addTest(test_sm)
testunit.addTest(test_vr)
# the test report path
fp = open(report_name, 'wb')
# define the test report
runner = HTMLTestRunner(stream=fp,
title='Test Report',
description= 'Test Case Running Status: ')
runner.run(testunit) #run test
fp.close() #close test report
上述几种方法, 都不是很灵活。每运行一个测试用例都要重新修改这个运行测试脚本。下一节将利用本节介绍的测试执行方法编写一个小工具,灵活的执行自己要执行的测试用例或测试用例集。