一、下载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. Nginx03 虚拟主机

    1 虚拟主机 虚拟主机使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每一台虚拟主机都具有独立的域名,具有完整的Internet服务器(WWW.FT ...

  2. Portainer功能使用之开启远程访问

    配置远程连接Docker服务 1.配置 说明:docker默认没有打开"2375"端口,需要先进行配置开启端口 命令 修改配置:vim /usr/lib/systemd/syste ...

  3. find_package()的使用

    find_package()命令是用来查找依赖包的,理想情况下,一句find_package()把一整个依赖包的头文件包含路径.库路径.库名字.版本号等情况都获取到,后续只管用就好了.但实际中往往CM ...

  4. The Missing Semester - 第四讲 学习笔记

    第四讲 数据整理 课程视频地址:https://www.bilibili.com/video/BV1ym4y197iZ 课程讲义地址:https://missing-semester-cn.githu ...

  5. SpringBoot 整合Seccurity、权限管理

    Spring Boot 整合Spring Seccurity 1.创建maven工程 <?xml version="1.0" encoding="UTF-8&quo ...

  6. 安卓逆向 IDA 静态调试分析

    1.找到我们分析的接口 2.F5进入C伪代码 修正一下参数,IDA无法正常识别 jstring __fastcall Java_com_example_sfs_MainActivity_getText ...

  7. Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'xxx' in 'where clause'

    在使用Ruoyi管理系统中出现这个问题 Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column ...

  8. 关于 Knex update 语句报错:Undefined binding(s) detected when compiling UPDATE

    下图是详细的报错截图,我敢保证前端传递的数据一个不漏,但还是报我没有绑定对应的字段: 官方文档的使用案例基本上都是where 子句在 update 语句之前.但,select 语句的 where 子句 ...

  9. 从NLP视角看电视剧《狂飙》,会有什么发现?

    目录 1.背景 2.数据获取 3.文本分析与可视化 3.1 短评数据预处理 3.2 词云图可视化 3.3 top关键词共现矩阵网络 3.4 <狂飙>演职员图谱构建 4.短评相关数据分析与可 ...

  10. elementUi-2.13.2版本添加暂无数据

    1.实现效果如下: 2. 代码实现 <el-table empty-taxt="暂无数据"></el-table> css样式设置: .el-table__ ...