一、下载BeautifulReport模块

1.下载BeautifulReport模块

下载地址:https://github.com/TesterlifeRaymond/BeautifulReport,下载zip文件,如下图:

 2、cmd命令安装

pip  install    BeautifulReport(这种的模板不稳定,有报错,需要高版本python支持)

 3、环境要求:python3.5以上

二、下载BeautifulReport模块的导入

1、下载zip文件解压与存放路径

然后解压,把整个文件包放到本地python的/Lib/site-packages/目录下,默认BeautifulReport-master名字改为BeautifulReport,如下图:

2、模块导入

from BeautifulReport import BeautifulReport

三、BeautifulReport模块使用

1、例子目录:

备注:img是截图存放地址必须是这个名字,不能改

2、截图封装使用实例:

BeatufulRort截图具体原理:
先定义好:错误截图方法(直接封装好,或者用例前面定义好即可!)
然后在用例前面使用装饰器@BeautifulReport.add_test_img('test_2_login_ok') ,括号里面是用例函数名,直接调用错误截图方法
这种截图展示在测试报告上
没有错误截图需要截图:引用装饰器,直接引用错误截图方法self.save_img("test_1_login_nopassword"),括号里面是用例函数名,
这种截图不会展示在测试报告上
BasePage.py

def save_img(self, img_name):  #错误截图方法,这个必须先定义好
"""传入一个img_name, 并存储到默认的文件路径下
:param img_name:
:return:"""
self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath(r"D:\python_syy\web_selenium\web_html_po_uniittest\img"), img_name))
#os.path.abspath(r"G:\Test_Project\img")截图存放绝对路径

#等待元素可见
def wait_eleVisble(self,locator,by=By.XPATH,wait_times=1):
#确定定位表达式是selenium可以用的
if by not in By.__dict__.values():
logging.error("定位类型不支持,请检查您的定位表达式")
#开始时间
t1 = time.time()
try:
WebDriverWait(self.driver,wait_times,1).until(EC.visibility_of_element_located((by,locator)))
t2 = time.time()
# 结束时间 - 两者之差就是真正的等待时间
logging.info("wait element visible start time:{0},end time:{1},total wait times is: {2}".format(t1, t2, t2 - t1))
except Exception as e:
self.save_img(error)
logging.exception("页面元素<{}>等待存在失败!}".format(locator))
# 抛出异常
raise e


test_login.py
import unittest
from selenium import webdriver
from PageObjects.login_page import LoginPage
from PageObjects.home_page import homePage
from TestDatas.login_testdata import *
from PageObjects.BasePage import BasePage
#引入日志路径
from TestDatas.Common_Data import *
from Common.dir_config import *
import time
from Common import myLogger2
import logging
#引入BeatufulRort模块
from BeautifulReport import BeautifulReport class Test_Login(unittest.TestCase): def setUp(self):
logging.info("======测试用例开始=======") self.driver=webdriver.Chrome()
self.lp=LoginPage(self.driver)
self.verificationErrors=[]
self.imgs=[] # (可选)初始化截图列表
pass def tearDown(self):
logging.info("======测试用例结束=======")
self.driver.close()
self.driver.quit()
#def save_img(self, img_name): #错误截图方法,这个必须先定义好,
# """传入一个img_name, 并存储到默认的文件路径下
# :param img_name:
#:return:"""
#截图存放路径,绝对路径,必须是img文件
#self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath(r"D:\python_syy\web_selenium\web_html_po_uniittest\img"), img_name)) @BeautifulReport.add_test_img('test_1_login_nopassword')#用例没有错截图实例
def test_1_login_nopassword(self): #用例没有错截图实例
logging.info("========开始执行测试用例:登陆无密码用例=========") #执行步骤
self.lp.login(url,login_testDatas[0]['user_name'],login_testDatas[0]['password'])
#期望结果和实际结果比对
self.save_img("test_1_login_nopassword") #没有报错也要截图的话,直接在这里调用方法就行了(暂时报告没有成功的截图)
self.assertEqual(self.lp.get_errormsg_loginArea(), login_testDatas[1]['check_msg'])
@BeautifulReport.add_test_img('test_2_login_ok') #装饰器,当你用例错误了,那么会自动调用save_img截图方法,存到指定目录下
def test_2_login_ok(self):#用例错误示例
logging.info("========开始执行测试用例:登陆成功用例=========")
#执行步骤
self.lp.login(url,login_testDatas[1]['user_name'],login_testDatas[1]['password'])
time.sleep(3)
url_1 = self.lp.get_url()
print("当前ur地址为:",url_1)
#期望结果和实际结果比对
hp=homePage(self.driver)
nink_name=hp.get_user_nickname()
self.assertEqual(nink_name,login_testDatas[1]['check_msg'])

3、执行用例实例:main_test.py 

#引入BeautifulReport模块
from BeautifulReport import BeautifulReport
import unittest
import time
#from TestCases.test_login import Test_Login
from Common.dir_config import *
suite = unittest.TestSuite()
#suite.addTests(unittest.TestLoader().loadTestsFromTestCase(Test_Login))
suite.addTests(unittest.TestLoader().discover(testcase_dir))
#报告的地址和名字
now=time.strftime('%Y-%m-%d_%H_%M_%S')
file_pach=htmlreport_dir+'/前程贷web测试报告_'+ now + ".html" #file_pach不能直接直接引用,会报路径问题,可能now的原因
print(file_pach) with open(file_pach,"wb+") as file:
result = BeautifulReport(suite)
result.report(description='前程贷web测试报告', filename='/前程贷web测试报告_'+ now ,log_path=htmlreport_dir)
  #filename=报告名称,description=所有用例总的名称,report_path=报告路径,如果不填写默认当前执行文件目录。
#theme=报告的主题,这个版本的模板展示没有支持,有四种可以选择:theme_default,theme_cyan,theme_candy,theme_memories 默认是第一种
 

4、报错问题

1、如果运行后报错如下:can use starred expression only as assignment target

2、 通过错误信息可以看出是python版本的问题:(不支持小于python3.5的版本)

3、如果pycharm中存在多个版本,可直接切换使用(没有的话可下载新的python版本,可存在不同的Python版本)

四、BeautifulReport模块的导出测试报告原理

1、.报告生成原理

说明:生成报告原理:他是读取了D:\python3.7.1\Lib\site-packages\BeautifulReport\template路径下面的theme_default.json基础数据,在读取template.html的数据,然后在写入你运行用例后的结果+body到报告里面去,就生成了报告

2、报告样式

     

安装参考地址:https://www.cnblogs.com/hao2018/p/10093343.html

报错参考地址:https://www.cnblogs.com/may18/p/10445162.html

unittest框架-测试报告模板【BeautifulReport】安装、配置使用、生成带截图的测试报告的更多相关文章

  1. smarty模板的安装配置

    第一步:下载Smarty模版源码包了    百度一下“Smarty下载”,下载最新版本的Smarty模版第二部:解压缩,将下载好的Smarty包解压缩    右键->解压到当前文件夹...你懂的 ...

  2. 一个好看的测试报告模板BeautifulReport

    def nrun(): report = ('report_' + ('%s') % time.strftime("%Y-%m-%d-%H-%M-%S", time.localti ...

  3. centos7.2 +cloudstack 4.11 +KVM +ceph 安装配置(网卡带聚合)

    系统安装,注意:管理节点版本是有要求的,配置为centos 7.2 最小安装版本(非最小化安装). 系统分区要求 /boot/efi 200MB / 100G /var 100G swap 0 其它给 ...

  4. Oracle 12c安装详细步骤,带截图

    1,在官网上下载oracle的压缩文件,两个都要下载. 并两个同时选中解压在一个文件夹里面. 2,解压之后,如下图,点击setup.exe稍等一会儿 ,3,开始安装: 不选点击下一步,或者直接点击下一 ...

  5. python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)

    3. 如何将第一步得到的地址和名称 输入 进第二步里的表格中呢... 用上述查找元素的方法,发现HTMLTestRunner.py中REPORT_TEST_WITH_OUTPUT_TMPL是用来输出测 ...

  6. Python3 完美解决unittest框架下不生成测试报告

    前提: 1.运行测试用例一切正常,只是没有测试报告显示 2.使用命令行pyhon 脚本名字.py 却可以生成测试报告 3.pycharm 在运行测试用例的时候 默认是以unittest 框架来运行的, ...

  7. 第9课:备份mysql数据库、重写父类、unittest框架、多线程

    1. 写代码备份mysql数据库: 1)Linux下,备份mysql数据库,在shell下执行命令:mysqldump -uroot -p123456 -A >db_bak.sql即可 impo ...

  8. 解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题

    1.HTMLTestRunner介绍 HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner.它是生成一个HTML报告,以一目了 ...

  9. unittest框架之 BeautifulReport 模板报告生成的正确姿势

    使用unittest框架的自动化测试,报告一定很重要,目前介绍一个比较高大上的报告模板 BeautifulReport.如果首次使用的话需要安装 pip install beautifulreport ...

  10. unittest测试框架生成可视化测试报告-BeautifulReport

    生成报告的样式: 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载Test ...

随机推荐

  1. Javaweb-1note C/S B/S HTML CSS javaScript一点点语法

    ------------恢复内容开始------------ Java web概念: *javaweb:使用java语言开发基于互联网的项目 *软件架构: 1.c/s:Clienr/Server 客户 ...

  2. 简要介绍WASAPI播放音频的方法

    正文 填一下之前挖的坑,这回就说说怎么用WASAPI播放声音吧. 本文完整代码可以在以下链接找到 https://gitcode.net/PeaZomboss/learnaudios 目录是demo/ ...

  3. esp32 开发资料

    开发工具下载 https://dl.espressif.cn/dl/esp-idf/ 设置芯片型号等 Windows 平台工具链的标准设置 - ESP32-C3 - - ESP-IDF 编程指南 la ...

  4. TCP/IP协议(5): IP(Internet Protocol) 协议 —— 连接各个网络的协议

    TCP/IP协议(5): IP(Internet Protocol) 协议 -- 连接各个网络的协议 关于 IP(Internet Protocol) 协议 IP(Internet Protocol) ...

  5. ctfshow_web入门 反序列化(254~266)

    要是没接触过的师傅们,可以先看看这个 web 254 这个题没有考什么,get方式传入payload即可,这里xxxxxx,就是6gex而已 payload: ?username=xxxxxx& ...

  6. mysql怎么设计库、设计表

    一. 设计表/库 设计思想就是要分析表每个字段的具体参数,包括但不限于以下几点: 约束? NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREIGN KEY ...

  7. vue .sync的理解

    假如父组件传给子组件的值,子组件接受之后,想要改变父组件传过来的值,就可以使用sync .sync是vue中用于实现简单的"双向绑定"的语法糖,在平时的开发中是非常使用的. vue ...

  8. vue2和vue3区别

    1. vue2和vue3双向数据绑定原理发生了改变 vue2的双向数据绑定是利用了es5 的一个API Object.definepropert() 对数据进行劫持 结合发布订阅模式来实现的.vue3 ...

  9. SQLServer 查询所有外键关联表信息

    有时候需要清除一些数据,但是总会有一些外键关联多加阻拦,下面是一些外键关联查询,方便更快捷有效的查询到需要处理的外键信息. 一.外键信息 查询列从左到右分别是: 外键约束名,子表名,外键列名,父表名 ...

  10. vue+elementUI表格实现自定义右键菜单

    组件代码: <template> <div id="contextmenu" class="contextmenu open"> < ...