框架构建(5):执行测试用例的几种方法

主要通过导入HTMLTestRunner模块来执行测试用例,可以产生html格式的测试报告。

HTMLTestRunner下载

下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

框架构建(5):执行测试用例的几种方法_第1张图片

下载完成后,将下载的文件保存到C盘的\Python27\Lib目录下。

       

  1. 使用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

上述几种方法, 都不是很灵活。每运行一个测试用例都要重新修改这个运行测试脚本。下一节将利用本节介绍的测试执行方法编写一个小工具,灵活的执行自己要执行的测试用例或测试用例集。

你可能感兴趣的:(Web,UI,Automation,Test)