下面继续以 test_baidu.py 文件为例生成 HTMLTestRunner 测试报告:

test_baidu.py

#coding=utf-8

from selenium import webdriver

import unittest, time

import HTMLTestRunner #引入 HTMLTestRunner 包

class Baidu(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Firefox()

self.driver.implicitly_wait(10)

self.base_url = "http://www.baidu.com/"

self.verificationErrors = []

#百度搜索用例

def test_baidu_search(self):

driver = self.driver

driver.get(self.base_url)

driver.find_element_by_id("kw").send_keys("HTNMLTestRunner")

driver.find_element_by_id("su").click()

def tearDown(self):

self.driver.quit()

self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":

#测试套件

testunit=unittest.TestSuite()

#添加测试用例到测试套件中

testunit.addTest(Baidu("test_baidu_search"))

#定义个报告存放路径

filename = 'E:\\test_object\\report\\result.html'

fp = file(filename, 'wb')

#定义测试报告

runner =HTMLTestRunner.HTMLTestRunner(

stream=fp,

title=u'百度搜索测试报告',

description=u'用例执行情况:')

#运行测试用例

runner.run(testunit)

#关闭报告文件

fp.close()

代码分析:

首先将 HTMLTestRunner 模块 imoport 进来。定义测试报告的存放路径 fiename,通过 file()将文件

以读写的方式打开。

接着调用 HTMLTestRunner 模块下的 HTMLTestRunner 方法。stream 指定测试报告文件;title 用于定

义测试报告的标题;description 用于定义测试报告的副标题。

现在通过 HTMLTestRunner 的 run()方法来运行测试套件中所组装的测试用例。最后 fp.close()来关

闭测试报告文件。

更易读的测试报告

虽然在编写测试用例(方法)时我们为每一个用例添加了注释,但这个注释信息只是在阅读代码时才

能看到,那么如何给测试报告中的用例添加注释,用来说明“test_baidu_search”是一个什么测试用例

这是我们这节所要解决的问题。

在此有之有我们先来学习一个技巧,通过 Python 提供的 help()来查看类和方法的说明。

Python Shell

>>> import HTMLTestRunner

>>> help(HTMLTestRunner)

Help on module HTMLTestRunner:

NAME

HTMLTestRunner

FILE

c:\Python27\lib\htmltestrunner.py

DESCRIPTION

A TestRunner for use with the Python unit testing framework. It

generates a HTML report to show the result at a glance.

The simplest way to use this is to invoke its main method. E.g.

import unittest

import HTMLTestRunner

... define your tests ...

if __name__ == '__main__':

HTMLTestRunner.main()

For more customization options, instantiates a HTMLTestRunner object.

HTMLTestRunner is a counterpart to unittest's TextTestRunner. E.g.

# output to a file

fp = file('my_report.html', 'wb')

runner = HTMLTestRunner.HTMLTestRunner(

stream=fp,

title='My unit test',

description='This demonstrates the report output by

HTMLTestRunner.'

)

# Use an external stylesheet.

# See the Template_mixin class for more customizable options

runner.STYLESHEET_TMPL = '<link rel="stylesheet"

href="my_stylesheet.css" type="text/css">'

# run the test

runner.run(my_test_suite)

……

首先 import 相关类或方法,通过 help()方查看类和方法的说明信息。这里以 HTMLTestRunner 为例。

优秀的开发者所开发的类和方法会在代码块中提供足够说明信息,让使用者可以通过说明信息就能全完掌

握类和方法的使用。显现 HTMLTestRunner 的开发者这一点做得很规范。因为它提供的足够的信息来告诉

我们 HTMLTestRunner 的使用。

那么代码中什么样的信息可以通过help()看到呢?打开HTMLTestRunner.py可以看到这些信息通过三

引号(""" """ 或 ''' ''')括起来的注释信息。在 Python 中三引号用于多行注释,这样的注释可以

通过 help()查看。

下面我们来定义并查看这些注释。

model.py

#coding=utf-8

u'''

这是我们自定义的一个模块,这个模块用于完成计算。

'''

def add(a,b):

u"""用于计算两数相加"""

return a+b

通过 help()方法查看创建的 model.py 文件。

model_.py

#coding=utf-8

import model

help(model)

执行结果:

>>> ================================ RESTART ================================

>>>

Help on module model:

NAME

model- 这是我们自定义的一个模块,这个模块用于完成计算。

FILE

c:\users\fnngj\desktop\model.py

FUNCTIONS

add(a, b)

用于计算两数相加

通过上面的例子可以看到在 add()方法下面所定义的注释,这个注释信息在调用 add()函数时不会显

示。可以通过 help()方法查看。在 test_baidu_search()方法中添加注释。

test_baidu.py

……

#百度搜索用例

def test_baidu_search(self):

u'''百度搜索用例'''

driver = self.driver

driver.get(self.base_url)

driver.find_element_by_id("kw").send_keys("HTNMLTestRunner")

driver.find_element_by_id("su").click()

……