生成html测试报告中关于文件名的坑

    最近学习python+selenium实战,在生成html测试报告文件时,由于代码写的与书尚不完全一致,导致出现运行失败的问题,在此记录:

    生成html测试报告的过程:

1.需要使用HTMLTestRunner.py,它是python的标准库unittest的一个扩展,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html,下载完成后复制到在python安装路径的/lib文件夹下(我用的是anaconda3,复制到我安装路径的C:\ProgramData\Anaconda3\Lib中)

2.由于刚下载的HTMLTestRunner.py是python2语法写的,我自己用的是python3,需要修改文件中的一些内容才使用python3

    (1)line94:

import StringIO--->import io

    (2)line539:

self.outputBuffer=StringIO.StringIO()--->self.outputBuffer=io.StringIO()

    (3)line631:

      print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime) --->

      print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

    (4)line642:

      if not rmap.has_key(cls): --->if not cls in rmap:

    (5)line766:

    uo =o.decode('latin-1') ---> uo=e

    (6)line772:

     ue = e.encode('latin-1') --->ue = e

3.案例:百度搜索的测试用例来生成html测试报告

step1:创建htmlRepoert_baidu.py,代码如下

step2:导入HTMLTestRunner,unittest等

#导入HTMLTestRunner
from selenium import webdriver
import unittest
from HTMLTestRunner import HTMLTestRunner
import time
from _io import open

#测试点击百度,生成html报告
#定义类继承unittest.TestCase
class Baidu(unittest.TestCase):
    '''百度搜索测试生成html报告'''
    #定义setup()设置驱动,定义变量
    def setUp(self):
        #设置驱动
        self.driver =webdriver.Firefox(executable_path="D:\\Program Files (x86)\\Mozilla Firefox32\\firefox.exe")  
        #设置隐式等待时间
        self.driver.implicitly_wait(10)
        #设置要访问的url
        self.base_url ="http://www.baidu.com"
    
    #定义要测试方法
    def test_baidu_search(self):
        '''测试搜索HTMLTestRunner'''
        #获取驱动
        driver = self.driver
        #访问url 
        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()

#利用unittest执行单元测试
if __name__ == "__main__":
    #创建测试集 
    testSuite = unittest.TestSuite()
    #添加测试案例
    testSuite.addTest(Baidu("test_baidu_search"))
    #定义测试报告存放的位置和名称
   
 #给文件名添加时间,防止被覆盖更新,需要先导入time模块的包
    now = time.strftime("%Y_%m_%d_%H:%M:%S")
    fileName = "./"+ now + "result.html"
    htmlFilePos = open(fileName,"wb")
    #定义具体的测试报告
    runner = HTMLTestRunner(stream=htmlFilePos,title="百度搜索的测试报告",description="用例执行情况:")
    
    #运行测试用例
    runner.run(testSuite)
    #关闭报告文件
    htmlFilePos.close()

4.运行之后报错信息:

    Traceback (most recent call last):
  File "D:\study-test\java_test_mar\pySeleniumBook\src\chap08\CreateHtmlReport\htmlReport_Baidu.py", line 53, in <module>
    htmlFilePos = open(fileName,"wb")

OSError: [Errno 22] Invalid argument: './2018_06_08_09:29:43result.html'

    由于是初学,python语言语法不清晰,认真检查了与书上的写法对比+度娘没查出来那里写错了,跑去问同学她也纳闷了会,好像没错的呀,过了会跟我说你是不是文件名拼错了,我说不造QAQ,然后她跟我发了张度娘的图:



5.深坑所在:windows的文件名不能包含冒号!多么痛的领悟。

 #给文件名添加时间,防止被覆盖更新,需要先导入time模块的包
    now = time.strftime("%Y_%m_%d_%H:%M:%S")

6.然后我度娘了一下window文件名规范,手敲一遍:

(1)格式:主文件名.扩展名

(2)文件名最多达255字符

(3)可用多间隔符的扩展名,如:a.b.c作为文件名

(4)文件名可包含空格,但是不能包含?:*"/;<>

(5)不区分大小写和中英文


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值