加上测试报告

执行完Pyunittest后,会输出一个测试结果,显示效果如下:

testSum (__main__.testNum) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

结果显示的比较清晰,报错的时候也能具体到某行,但是别人是没办法看的,我们需要一个更漂亮的测试报告来告诉别人我们的自动化到底测试了什么。

使用HTMLTestRunner生成html的测试报告

HTMLTestRunner的安装

其实就是引入一个模块,我们需要去下载这个文件下载点我。下载之后要把这个文件放到Python的目录下。笔者使用的是MacBook打开终端,输入python进入交互模式输入下列命令

import sys
sys.path

就能找到python的地址了,我的是'/Library/Python/2.7/site-packages'。所以我们只要吧HTMLTestRunner.py文件放到'/Library/Python/2.7/'这个目录下就行了。测试是否正常,只要在终端中输入import HTMLTestRunner,如果没有报错就表示已经成功安装了,是不是很简单?

使用HTMLTestRunner

首先,我们使用的时候要导入这个模块

import HTMLTestRunner

然后在运行的地方加上这些代码

    filename = '/Users/svenweng/Desktop/result.html'
    fp = file(filename,'wb')

    runner = HTMLTestRunner.HTMLTestRunner(
        stream = fp,
        title = 'Baidu Test Report',
        description = 'testcase demo'
        )

其中filename表示生成报告的地址,笔者使用的是MacBook所以导出的地址是这样的,如果是Windows用户,则填写绝对路径。

fp = file(filename,'wb')

暂不知道是什么意思,先copy着用吧。最后的runner中加上生成报告的元素,title就是标题了,description就是对测试的一些描述。把这些整合进上一章的代码,完整代码如下:

# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest,time,re
import HTMLTestRunner

class Baidu(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.baidu.com"
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_baidu_search(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("kw").send_keys("selenium webdriver")
        driver.find_element_by_id("su").click()
        time.sleep(2)
        driver.close()

    def test_baidu_set(self):
        driver = self.driver
        driver.get(self.base_url+"/gaoji/preferences.html")
        driver.find_element_by_xpath('//*[@id="nr"]/option[2]').click()
        time.sleep(2)

        driver.find_element_by_xpath("//*[@id='save']").click()
        time.sleep(2)
        driver.switch_to_alert().accept()

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([],self.verificationErrors)


if __name__ == '__main__':
    testunit = unittest.TestSuite()
    testunit.addTest(Baidu('test_baidu_search'))
    testunit.addTest(Baidu('test_baidu_set'))
    filename = '/Users/svenweng/Desktop/result.html'
    fp = file(filename,'wb')

    runner = HTMLTestRunner.HTMLTestRunner(
        stream = fp,
        title = 'Baidu Test Report',
        description = 'testcase demo'
        )
    runner.run(testunit)

你可能感兴趣的:(加上测试报告)