下面继续以 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()
……