较测试报告(2),该文章将测试报告和测试截图存放在随机变动的文件夹下面,去除了要存放在指定文件夹下面的限制。
注:遇到问题有:
1.创建由时间自动拼接的多级文件夹
2.
1 import os 2 import time 3 4 current_time = time.strftime("%Y-%m-%d-%H_%M", time.localtime(time.time())) 5 current_time1 = time.strftime("%H_%M_%S", time.localtime(time.time())) 6 pic_path1 = '.\' + current_time + "\result\" 7 pic_path = pic_path1 + "image"+"\" + current_time1 + '.png' 8 os.makedirs(pic_path) 9 print(pic_path)
拼接好的路径要使用os.makedirs()创建对应的文件夹目录
path = pic_path1 + current_time1 + '.png'
创建好的文件夹无法再使用该路径继续创建下级路径,只能存放对应的内容
3.测试报告必须得放在测图文件的外层目录下,否者在测试报告中查找图片会报如下的错误
整个代码如下:
1 # -*- coding: utf-8 -*- 2 import HTMLTestReport 3 import HTMLTestRunner 4 import os 5 import sys 6 import time 7 import unittest 8 from selenium import webdriver 9 10 current_time = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(time.time())) 11 pic_path = '.\' + current_time + "\result\" 12 pic_path1 = '.\' + current_time + "\result\image\" 13 os.makedirs(pic_path) 14 os.makedirs(pic_path1) 15 16 class Baidu(unittest.TestCase): 17 def setUp(self): 18 self.driver = webdriver.Firefox() 19 self.driver.implicitly_wait(30) 20 self.driver.maximize_window() 21 self.driver.get("https://www.baidu.com") 22 time.sleep(5) 23 24 def test_case1(self): 25 """设计测试case""" # *****效果是在测试报告中显示显示出测试名称***** 26 print("========【case_0001】打开百度搜索 =============") 27 # "."表示创建的路径为当.py文件所处的地址,\是用将“”转义 28 current_time1 = time.strftime("%H_%M_%S", time.localtime(time.time())) 29 path = pic_path1 + current_time1 + '.png' 30 print(path) # 打印图片的地址 31 time.sleep(5) 32 self.driver.save_screenshot(path) # 截图,获取测试结果 33 time.sleep(2) 34 self.assertEqual('百度一下,你就知道', self.driver.title) # 断言判断测试是否成功,判断标题是否为百度(设计失败的case) 35 36 def test_case2(self): 37 """设计测试过程中报错的case""" 38 global pic_path 39 print("========【case_0002】搜索selenium =============") 40 self.driver.find_element_by_id("kw").clear() 41 self.driver.find_element_by_id("kw").send_keys(u"selenium") 42 self.driver.find_element_by_id('su').click() 43 time.sleep(2) 44 # "."表示创建的路径为当.py文件所处的地址,\是用将“”转义 45 current_time1 = time.strftime("%H_%M_%S", time.localtime(time.time())) 46 path = pic_path1 + current_time1 + '.png' 47 print(path) # 打印图片的地址 48 time.sleep(5) 49 self.driver.save_screenshot(path) # 截图,获取测试结果 50 time.sleep(2) 51 self.assertIn('selenium', self.driver.title) # 断言书写错误,导致case出错 52 53 def test_case3(self): 54 """设计测试成功的case""" 55 print("========【case_0003】 搜索梦雨情殇博客=============") 56 self.driver.find_element_by_id("kw").clear() 57 self.driver.find_element_by_id("kw").send_keys(u"明道") 58 self.driver.find_element_by_id('su').click() 59 # "."表示创建的路径为当.py文件所处的地址,\是用将“”转义 60 current_time1 = time.strftime("%H_%M_%S", time.localtime(time.time())) 61 path = pic_path1 + current_time1 + '.png' 62 print(path) # 打印图片的地址 63 time.sleep(5) 64 self.driver.save_screenshot(path) # 截图,获取测试结果 65 time.sleep(3) 66 print(self.driver.title) 67 68 self.assertIn('明道', self.driver.title) 69 70 def tearDown(self): 71 self.driver.quit() 72 73 74 if __name__ == "__main__": 75 '''生成测试报告''' 76 current_time1 = time.strftime("%H_%M_%S", time.localtime(time.time())) 77 testunit = unittest.TestSuite() 78 testunit.addTest(Baidu("test_case1")) 79 testunit.addTest(Baidu("test_case2")) 80 testunit.addTest(Baidu("test_case3")) 81 report_path = pic_path + "SoftTestReport_" + current_time1 + '.html' # 生成测试报告的路径 82 fp = open(report_path, "wb") 83 runner = HTMLTestReport.HTMLTestRunner(stream=fp, title=u"自动化测试报告", description='自动化测试演示报告', tester='fyr') 84 # runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"自动化测试报告", description='自动化测试演示报告') 85 runner.run(testunit) 86 fp.close()