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、报告效果

 

posted @ 2023-02-16 15:19  莲(LIT)  阅读(608)  评论(0编辑  收藏  举报