unittest框架,漂亮的报告BeautifulReport配置与错误截图详细解说
1.下载BeautifulReport模块
下载地址:https://github.com/TesterlifeRaymond/BeautifulReport
2.解压与存放路径
下载BeautifulReport的完整.ZIP文件,然后解压,把整个文件包放到本地python的/Lib/site-packages/目录下
可能出现的错误,可以参考地址:https://blog.csdn.net/chenmozhe22/article/details/82888060
3.例子(web操作)
目录如下:
以下是Test_1.py文件代码:
- import unittest,time,os
- from selenium import webdriver
- from BeautifulReport import BeautifulReport
- from selenium.webdriver.common.action_chains import ActionChains
- from selenium.webdriver.support.wait import WebDriverWait
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support import expected_conditions as EC
- class Test_01(unittest.TestCase):
- def save_img(self, img_name): #错误截图方法,这个必须先定义好
- """
- 传入一个img_name, 并存储到默认的文件路径下
- :param img_name:
- :return:
- """
- self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath(r"G:\student_project\Hao\img"), img_name)) #os.path.abspath(r"G:\Test_Project\img")截图存放路径
- def setUp(self):
- print("开始测试")
- self.driver = webdriver.Chrome()
- self.driver.maximize_window()
- self.driver.get("https://www.baidu.com/")
- def tearDown(self):
- print("结束测试")
- self.driver.close()
- @BeautifulReport.add_test_img('test_case_1') #装饰器,当你没有报错也要截图的话,那么你需要在用例里面调用save_img()方法
- def test_case_1(self): #用例没有错截图示例
- WebDriverWait(self.driver,10).until(EC.visibility_of_element_located((By.XPATH,"//div[@id='u1']/a[@name='tj_settingicon' and @class='pf']")))
- ele=self.driver.find_element_by_xpath("//div[@id='u1']/a[@name='tj_settingicon' and @class='pf']")
- ActionChains(self.driver).move_to_element(ele).perform()
- self.driver.find_element_by_xpath('//a[@class="setpref"]').click()
- WebDriverWait(self.driver, 10).until(
- EC.visibility_of_element_located((By.XPATH, '//a[text()="保存设置"]')))
- text_data=self.driver.find_element_by_xpath('//a[text()="保存设置"]').text
- self.save_img("test_case_1") #没有报错也要截图的话,直接在这里调用方法就行了
- self.assertEqual("保存设置",text_data)
- @BeautifulReport.add_test_img('test_case_2') #装饰器,当你用例错误了,那么会自动调用save_img截图方法,存到指定目录下
- def test_case_2(self): #用例错误截图示例
- time.sleep(1)
- text_data = self.driver.find_element_by_xpath('//div[@id="u1"]/a').text
- self.assertEqual("新闻1", text_data)
注意:如果想正确的用例也截图,那么你可以在用例上面添加装饰器,然后在用例里面调用save_img()方法就行了
以下是run.py文件代码:
- import unittest,time,os
- from BeautifulReport import BeautifulReport
- from Test_Case import Test_1
- current_path = os.getcwd()
- report_path = os.path.join(current_path, "Report")
- now = time.strftime("%Y-%m-%d %H-%M-%S", time.localtime(time.time()))
- # 报告地址&名称
- report_title = 'Example报告' + now + ".html" # 如果不能打开这个文件,可能是now的格式,不支持:和空格
- if __name__ == '__main__':
- suite = unittest.TestSuite()
- loader=unittest.TestLoader()
- suite.addTests(loader.loadTestsFromModule(Test_1))
- #运行用例filename=报告名称,description=所有用例总的名称,report_path=报告路径,如果不填写默认当前执行文件目录,theme=报告的主题,有四种可以选择:theme_default,theme_cyan,theme_candy,theme_memories 默认是第一种
- BeautifulReport(suite).report(filename="测试报告", description='Test_01模块',report_dir=report_path,theme="theme_cyan")
4.报告展示
说明:生成报告原理:他是读取了D:\python3.7.1\Lib\site-packages\BeautifulReport\template路径下面的theme_default.json基础数据,在读取template.html的数据,然后在写入你运行用例后的结果+body到报告里面去,就生成了报告
unittest框架,漂亮的报告BeautifulReport配置与错误截图详细解说的更多相关文章
- unittest框架之 BeautifulReport 模板报告生成的正确姿势
使用unittest框架的自动化测试,报告一定很重要,目前介绍一个比较高大上的报告模板 BeautifulReport.如果首次使用的话需要安装 pip install beautifulreport ...
- 解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题
1.HTMLTestRunner介绍 HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner.它是生成一个HTML报告,以一目了 ...
- unittest框架扩展(自动生成用例)自动化-上
一.思想: 基于数据驱动和代码驱动结合的自动化测试框架. 二.自动化测试框架步骤: 1.获取用例,用例格式:.ymal 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 6.日志模块 三.基 ...
- python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)
预期框架整理目标: 1.单个用例维护在单个.py文件中可单个执行,也可批量生成组件批量执行 2.对定位参数,定位方法,业务功能脚本,用例脚本,用例批量执行脚本,常用常量进行分层独立,各自维护在单独的. ...
- Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins
本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...
- 第9课:备份mysql数据库、重写父类、unittest框架、多线程
1. 写代码备份mysql数据库: 1)Linux下,备份mysql数据库,在shell下执行命令:mysqldump -uroot -p123456 -A >db_bak.sql即可 impo ...
- unittest框架(惨不忍睹低配版)
根据我上个随笔的unittest框架优化得来,虽然对于smtp模块还是有点迷糊,不过还是勉强搭建运行成功了,还是先上代码: #login_test.py import requests class L ...
- Unittest框架小结
在日常的自动化测试过程中,Python里有一个自带的单元测试框架是unittest模块,简单易用,这里简单介绍下其主要的用法. Unittest测试框架主要包含四个部分 TestCase 也就是测试用 ...
- python接口自动化24-有token的接口项目使用unittest框架设计
获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...
随机推荐
- 曼孚科技:数据标注,AI背后的百亿市场
1. 两年前,来自山东农村的王磊成为了一位数据标注员.彼时的他,工作内容非常简单且枯燥:识别图片中人的性别. 然而,一段时间之后,他注意到分配给他的任务开始变得越来越复杂:从识别性别到年龄,从框选 ...
- pl/sql快速输入select * from等语句快捷键设置
1.工具-->首选项 2.编辑器-->编辑 3.定义快捷键 -- > 保存 4.快捷键+回车就可以出现
- centos因为安装花生壳而无法登录系统的问题
服务器安装 phddns 花生壳 启动失败,一直卡在启动进度条页面. 解决办法 1.按F5查看卡在什么位置, 2.查看解决方法:程序卡住的情况下,直接备份资料后,卸载程序重启就可以了. 3.进入到si ...
- 51Nod 1344 走格子 (贪心)
有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格子走出去.机器人有一个初始能量,每个格子对应一个整数A[i],表示这个格子的能量值.如果A[i] > 0,机器 ...
- Educational Codeforces Round 81 (Rated for Div. 2) 题解
过了n天补的题解:D AB就不用说了 C. Obtain The String 思路挺简单的,就是贪心,但是直接贪心的复杂度是O(|s|*|t|),会超时,所以需要用到序列自动机 虽然名字很高端但是就 ...
- Python-Django学习笔记(三)-Model模型的编写以及Oracle数据库的配置
Django使用的 MTV 设计模式(Models.Templates.Views) 因此本节将围绕这三部分并按照这个顺序来创建第一个页面 模型层models.py 模型是数据唯一而且准确的信息来源. ...
- [ZJOI2007] 矩阵游戏 - 二分图匹配
题意:问一个\(0-1\)方阵是不是非奇异的 其实我真的很想求行列式 #include <bits/stdc++.h> using namespace std; #define N 505 ...
- LightOJ-1370 Bi-shoe and Phi-shoe (欧拉函数+二分)
Problem Description Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe ...
- 【动态规划】【C/C++】简单的背包问题
简单的背包问题 背包问题动态规划中非常经典的一个问题,本文只包含01背包,完全背包和多重背包.更加详尽的背包问题的讲解请参考崔添翼大神的<背包九讲> 简单的01背包 问题导入:新年到了,m ...
- vue自定义日期选择,类似美团日期选择,日历控件,vue日历区间选择
一个日历的控件,基于vue的,可以日历区间选择,可用于酒店日历区间筛选,动手能力强,可以修改成小程序版本的,先上效果图 里面的颜色样式都是可以修改的 选择范围效果 话不多说,直接上干货,代码可以直接复 ...