Python-BeautifulReport的简单使用
一、简介
- BeautifulReport.report
report ( filename -> 测试报告名称, 如果不指定默认文件名为report.html description -> 测试报告用例名称展示 log_path='.' -> log文件写入路径 )
- BeautifulReport.add_test_img
如果使用报告过程中需要把测试报告的截图放在报告中, 可以使用add_test_img方法
- add_test_img ( *pargs )
可以在测试用例上挂载一个装饰器
ps:
- 默认存放的图片路径是img, 需要在当前测试项目的启动路径下, 创建一个img文件夹
- 传递给装饰器的图片,在运行测试前可以不存在, 运行测试之后生成即可.
- 当文件在报告中展示后, 想要看到原图, 可以点击报告中的缩略图查看完整的截图
二、工具包下载
1、https://github.com/TesterlifeRaymond/BeautifulReport(出自此大神)
2、下载后把BeautifulReport整个包放到python的/Lib/site-packages/目录下
三、使用方式
1、项目结构
- test_case:存放测试用例
- test_report:存放生成的测试报告
- run.py:运行测试脚本
- img:存放测试截图
2、测试脚本
测试脚本test_a_bd.py参考代码
# -*- coding:UTF-8 -*- import unittest from selenium import webdriver from time import sleep class Test_a(unittest.TestCase): """测试类A""" @classmethod def setUpClass(self): self.driver = webdriver.Chrome() self.driver.get("https://www.baidu.com/") def test_b_dubai(self): """用例1""" print("1", self.driver.title) sleep(2) self.driver.close()
测试脚本test_b_db.py参考代码
# -*- coding:UTF-8 -*- import unittest from selenium import webdriver from selenium.webdriver.common.by import By from BeautifulReport import BeautifulReport import os from time import sleep class Test_b(unittest.TestCase): """测试类B""" img_path = 'img' def save_img(self, img_name): """ 传入一个img_name, 并存储到默认的文件路径下 :param img_name: :return: """ self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath(self.img_path), img_name)) @classmethod def setUpClass(self): self.driver = webdriver.Chrome() self.driver.get("https://www.baidu.com/") @BeautifulReport.add_test_img('搜索前', '搜索后') def test_a_baidu(self): """用例2""" self.save_img('搜索前') self.driver.find_element(By.ID, "kw").send_keys("博客园") self.driver.find_element(By.ID, "su").click() self.save_img('搜索后') print("2", self.driver.title) self.driver.close()
run.py参考脚本
# -*- coding:UTF-8 -*- import unittest from BeautifulReport import BeautifulReport import os from tomorrow import threads import datetime # 定义目录 BASE_DIR = os.path.dirname(os.path.realpath(__file__)) TEST_DIR = os.path.join(BASE_DIR, "test_case") REPORT_DIR = os.path.join(BASE_DIR, "test_report") # kill 所有chromedriver进程 os.system("taskkill /f /im chromedriver.exe") def add_case(): '''加载所有的测试用例''' discover = unittest.defaultTestLoader.discover( TEST_DIR, pattern="test_*.py" ) return discover @threads(3) def run(test_suit): # 定义测试报告名称 now_time = str(datetime.datetime.now().strftime('%Y%m%d%H%M')) report_name = "report_" + now_time result = BeautifulReport(test_suit) result.report(filename=f'{report_name}.html', description='平台报告', log_path='test_report') if __name__ == "__main__": # 用例集合 cases = add_case() print(cases) for i in cases: print(i) run(i)
3、报告效果