今天在学习自动化测试的高级应用,第一篇就是生成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( ) #关闭报告文件