unittest测试框架生成可视化测试报告-BeautifulReport
生成报告的样式:
在说unittest之前,先说几个概念:
TestCase 也就是测试用例
TestSuite 多个测试用例集合在一起,就是TestSuite
TestLoader是用来加载TestCase到TestSuite中的
TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
1.单元测试:
开发自己测自己写的代码;
2.导入模块unittest:
import unittest #导入unittest模块
from BeautifulReport import BeautifulReport #导入BeautifulReport 报告模板模块
3.运行一个简单的unittest:
主要是体会一下unittest的写法
import unittest #单元测试模块 class TestCalc(unittest.TestCase):
def test1(self): #函数名要以test开头,否则不会被执行
self.assertEqual(1,1) def test2(self):
self.assertEqual(1,2) unittest.main() #会运行当前python文件里面的所有测试用例
4.unittest单元测试的基本流程:
用例集/测试套件:存放测试用例的
①.先把所有的测试用例都放到用例集
②.运行这些测试用例
③.产生报告
suite方式组织测试用例1:
import unittest #单元测试模块
from BeautifulReport import BeautifulReport as bf #导入BeautifulReport模块,这个模块也是生成报告的模块,但是比HTMLTestRunner模板好看 class TestCalc(unittest.TestCase):
def setUp(self): #每个用例运行之前运行的
print('setup是啥时候运行的') def tearDown(self): #每个用例运行之后运行的
print('teardown是啥时候运行的') @classmethod
def setUpClass(cls): #在所有用例执行之前运行的
print('我是setUpclass,我位于所有用例的开始') @classmethod
def tearDownClass(cls): #在所有用例都执行完之后运行的
print('我是tearDownClass,我位于多有用例运行的结束') def testcc(self): #函数名要以test开头,否则不会被执行
'''这是第一个测试用例''' #用例描述,在函数下,用三个单引号里面写用例描述
self.assertEqual(1,1)
print('第一个用例') def testaa(self):
'''这个是第二个测试用例'''
self.assertEqual(1,1)
print('第二个用例') def testdd(self):
'''用例描述3'''
print('第三个用例') def testbb(self):
'''用例描述4'''
print('第四个用例') suite = unittest.TestSuite() #定义一个测试集合
suite.addTest(unittest.makeSuite(TestCalc)) #把写的用例加进来(将TestCalc类)加进来
run = bf(suite) #实例化BeautifulReport模块
run.report(filename='test',description='这个描述参数是必填的')
使用discover方式组织测试用例:
使用场景:
运行指定目录下的全部测试用例
import unittest
from BeautifulReport import BeautifulReport #导入BeautifulReport if __name__ == '__main__':
suite_tests = unittest.defaultTestLoader.discover(".",pattern="*tests.py",top_level_dir=None) #"."表示当前目录,"*tests.py"匹配当前目录下所有tests.py结尾的用例
BeautifulReport(suite_tests).report(filename='百度测试报告', description='搜索测试', log_path='.') #log_path='.'把report放到当前目录下
运行指定测试类中的case,suite方式组织测试用例:
使用场景:
假如有测试类AB,类中各有测试方法1,2,3
假如想仅运行测试类A中方法1,测试类B中的方法3,可以使用这种方式组织测试用例
主要是为了在case量很大时,很方便的调试
import unittest
import os
from BeautifulReport import BeautifulReport as bf
from case.subway.test_subway import Subway #仅运行指定的case Subway是类名,test_subway_001是类中的测试方法名
caseList=[Subway("test_subway_001")]
#使用suite组织测试用例
suite = unittest.TestSuite()
suite.addTests(caseList)
#运行并生成测试报告
run = bf(suite)
run.report(filename="test", description="测试报告")
目录结构:
一个文件夹下有若干测试类,每个测试类正可能又会有若干个测试用例
代码结构:
谢谢二位大神:
Python Selenium 之生成BeautifulReport可视化报告
单元测试unittest及报告生成(两种报告模板)
unittest测试框架生成可视化测试报告-BeautifulReport的更多相关文章
- 基于Python的接口自动化-unittest测试框架和ddt数据驱动
引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...
- Python 下的unittest测试框架
unittest测试框架,直接上图吧: data:数据:主要格式为CSV:读取方式:csv.reade: public:封装的模块:通用的模块单独封装,所需参数设置为变量: testcase:测试用例 ...
- Python接口测试实战3(下)- unittest测试框架
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...
- python利用unittest测试框架组织测试用例的5种方法
利用unittest测试框架可以编写测试用例,执行方式分两大类:利用main方法和利用testsuite,其中利用测试套件来组织测试用例可以有4种写法. 在此之前,先了解几个概念 TestCase:所 ...
- <day002>Selenium基本操作+unittest测试框架
任务1:Selenium基本操作 from selenium import webdriver # 通用选择 from selenium.webdriver.common.by import By # ...
- Appium基于python unittest自动化测试并生成html测试报告
本文基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(uni ...
- Python单元测试unittest测试框架
本文的主题是自动化测试框架的实现,在实现之前,先了解一下关于unittest模块的相关知识: Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回 ...
- Selenium(十八):unittest单元测试框架(四) HTML测试报告
1. HTML测试报告 对测试人员来而言,测试的产出很难衡量.换句话说,测试人员的价值比较难以量化和评估,相信这一点对软件测试人员来说深有体会.我们花费了很多时间与精力所做的自动化测试也是如此.所以, ...
- unittest测试框架详解
单元测试的定义 1. 什么是单元测试? 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类,一般是开发来做的,按照测试 ...
随机推荐
- 红黑树插入操作---以JDK 源码为例
红黑树遵循的条件: 1.根节点为黑色. 2.外部节点(叶子节点)为黑色. 3.红色节点的孩子节点为黑色.(由此,红色节点的父节点也必为黑色) 4.从根节点到任一外部节点的路径上,黑节点的数量相同. 节 ...
- JavaSE编码试题强化练习5
1.不使用函数实现字符串的翻转 /** * 1.不使用函数实现字符串的翻转 */ public class TestStringReverse { public static void main(St ...
- dp(动态规划之最佳路径+dfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1078 FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Ot ...
- ex3 多分类和神经网络
介绍 在本练习中,您将实现一对多逻辑回归和神经识别手写数字的网络.在开始编程之前练习,我们强烈建议观看视频讲座并完成相关主题的复习问题.要开始练习,您需要下载起始代码并将其内容解压缩到要完成练习的目录 ...
- Composer简介与下载安装
简介: 初次接触Composer的PHP程序员可能是需要下载ThinkPHP框架(5.1),那么什么是Composer,怎么下载安装呢? Composer是一个依赖管理工具,下载管理第三方包是其主要功 ...
- windows 10 自动升级后环境变量无效
上个礼拜放假的时候,win10提示需要升级,我当时随手就一点更新并关机...今天,在启动项目时候尴尬了: D:\project\js\iam-web\code\iam-web>npm run d ...
- openstack stein部署手册 4. glance
# 建立数据库用户及权限 create database glance; grant all privileges on glance.* to glance@'localhost' identifi ...
- 在eclipse中添加和删除项目
一. 将JAVA文件夹导入Eclipse中的方法: 方法一:直接将java文件夹复制,然后粘贴到项目下: 方法二:(1)打开Eclipse,点击项目的空白处,现在import: (2)现在Existi ...
- Java面向对象(二) 接口、多态和泛型
一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...
- LeetCode--054--区螺旋矩阵(java)
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ...