Selenium2 + Python3.6实战(五):生成HTML测试报告 Invalid argument

今天在学习自动化测试的高级应用,第一篇就是生成HTML测试报告,由于测试报告的名称没有进行设置,所以每次运行测试之前若没有手动修改之前的报告名称,运行时就会把原来的报告覆盖。这样做显然很麻烦,最好的解决办法就是在报告名称中加入当前时间,这样生成的报告既不会重叠,又能更清晰地知道报告生成的时间。

但是却在运行代码的过程中,出现了报错:

Traceback (most recent call last):
  File "D:/Python/selenium/test_baidu.py", line 33, in <module>
    fp = open (filename, 'wb')
OSError: [Errno 22] Invalid argument: './2017-07-25 16:52:00result.html'

乍看我还以为是发生了什么事情,仔细查看我的代码也没有觉得有问题。思索了很久,突然意识到,我把文件名的时间设置成now = time.strftime("%Y-%m-%d %H:%M:%S")

文件名是不允许出现类似于/ \ :等特殊字符的。瞬间我就清楚了,立马修正过来,再次允许,果然成功了。

这时在存放代码的文件目录下就能找到对应的测试报告:

 

以下是代码:

from selenium import webdriver

import unittest

import time

from HTMLTestRunner import HTMLTestRunner

 

class Baidu (unittest.TestCase):

    '''百度搜索测试'''

 

    def setUp (self):

        self.driver = webdriver.Firefox( )

        self.driver.implicitly_wait (10)

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

 

    def test_baidu_search(self):

        '''搜索关键字:HTMLTestRunner'''

        driver = self.driver

        driver.get (self.base_url)

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

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

 

    def tearDown (self):

        self.driver.quit( )

 

if __name__ == "__main__":

    testunit = unittest.TestSuite( )

    testunit.addTest (Baidu("test_baidu_search"))

 

    #按照一定格式获取当前时间

    now = time.strftime("%Y-%m-%d %H_%M_%S")    #一定不要包括禁止使用的文件名特殊符号

   

    #定义报告存放路径

    filename = './' + now + 'result.html'

    fp = open (filename, 'wb')

    #定义测试报告

    runner = HTMLTestRunner (stream=fp,

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

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

    runner.run (testunit)   #运行测试用例

    fp.close( )   #关闭报告文件

 

posted @ 2017-07-25 17:23  杀人的微笑A  阅读(279)  评论(0编辑  收藏  举报