步骤:
1.先导入unittest
2.编写一个测试类(继承unittest.TestCase)
3.编写测试用例类,一个方法就是一条用例
4.加载测试用例,有三种方式:加载测试方法,加载测试类,加载测试模块
5.执行测试,生成测试报告
例子:
1. 新建一个测试类:
class mathematics:
def two_add(self,a,b): # 两数相加
return a+b
def two_sub(self,a,b): # 两数相减
return a+b
2.编写测试方法:
import unittest
from ddt import ddt,data
from wen.math import mathematics
from wen.get_excel import DoExcel # 导入Excel测试数据
cases=DoExcel('data_sheet.xlsx', 'add').get_data() #实例化对象 调用.get_data()的方法
@ddt
class TestAdd(unittest.TestCase):
def setUp(self): # 初始化测试环境
self.t=DoExcel('data_sheet.xlsx','add')
print('---------开始执行---------')
def tearDown(self): # 清理测试环境
print('----------执行结束---------')
@data(*cases)
def test_two_add(self,case): # 加法计算
res=mathematics().two_add(case.a,case.b)
try:
self.assertEqual(res,case.expect)
resuit='pass'
except Exception as e:
resuit='Faild'
print('断言错误:{}'.format(e))
raise e
finally:
self.t.write_data1(case.id+1,6,res)
self.t.write_data1(case.id+1,7,resuit)
print('两数相加的结果是{}'.format(res)) 3.从Excel中获取测试数据
from openpyxl import load_workbook  #读写   导入openpyxl模块,可以进行excel文件的读写
class Case:
def __init__(self):
self.id=None
self.title=None
self.a=None
self.b=None
self.expect=None class DoExcel:
def __init__(self,file_name,sheet_name):
self.file=file_name
self.sheet=sheet_name def get_data(self): #获取 数据
# wb = load_workbook('data_sheet.xlsx') # 打开工作簿是打开你自己定义的工作薄 你这样写会比较好
# sheet = wb['add'] #定位你定义工作薄的表单 这样写你会比较理解 你用初始化调用也可以
wb=load_workbook(self.file) # 打开工作簿
sheet=wb[self.sheet] # 定位表单
cases=[] #创建空列表 存储查询后的结果
for i in range(2,sheet.max_row+1):
row_case=Case()
row_case.id = sheet.cell(row=i,column=1).value
row_case.title = sheet.cell(row=i,column=2).value
row_case.a = sheet.cell(row=i,column=3).value
row_case.b = sheet.cell(row=i,column=4).value
row_case.expect = sheet.cell(row=i,column=5).value
cases.append(row_case)
return cases
#因为你有加法表单也有减法表单 所以你需要定义两个方法
def write_data1(self,row,column,value):
wb = load_workbook(self.file) # 打开工作簿
sheet = wb['add'] # 定位表单 这个定位一定要定位到你的加法或者减法
sheet.cell(row,column).value=value
wb.save('data_sheet.xlsx')
def write_data2(self,row,column,value):
wb = load_workbook(self.file) # 打开工作簿
sheet = wb['sub'] # 定位表单
sheet.cell(row,column).value=value
wb.save('data_sheet.xlsx')
if __name__=='__main__':
n=DoExcel('data_sheet.xlsx', 'sub').get_data()
print(n)

4.加载测试用例并执行,生成报告
import unittest   #  导入unittest
import HTMLTestRunnerNew # 导入网页版测试报告模板
from wen import test_add_math # 导入加法测试类
from wen.test_add_math import TestAdd
# 加载加法测试用例
suite = unittest.TestSuite()
loader=unittest.TestLoader()
# suite.addTest(loader.loadTestsFromTestCase(test_add_math.TestAdd)) #加载测试类
suite.addTest(loader.loadTestsFromTestCase(TestAdd)) # 加载测试类
with open('math_add.html', 'wb') as file: 执行并生成测试报告
runer = HTMLTestRunnerNew.HTMLTestRunner(file, 2, tester='赵文', title='数学类之加法', description='unittest')
runer.run(suite)
 

unittest举例的更多相关文章

  1. unittest自动化测试举例:自动读取ymal用例&调用接口并生成报告

    用unittest框架写的接口自动化实现过程: 1.编写ymal格式用例: 2.导入ddt模块,该模块的主要功能是帮你读取ymal用例文件,自动获取内容并循环调用函数,具体见代码. 3.导入Beaut ...

  2. python学习笔记之——unittest框架

    unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...

  3. django的单元测试框架unittest、覆盖率

    django的单元测试 指定测试范围: 指定运行某些测试文件./manage.py test --pattern="tests_*.py" -v 2 运行所有测试文件./manag ...

  4. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  5. unittest单元测试框架之unittest工作原理(一)

    1.Unittest 核心组件 test case.test suite.test runner.test fixture 2.unittest 静态图 Testcase:一个 testcase 就是 ...

  6. 自动化测试===requests+unittest+postman的接口测试

    postman是一个跨平台的接口测试工具,下载链接在这里:https://www.getpostman.com/ unittest是一个单元测试框架,python中安装:pip install uni ...

  7. python之单元测试框架—unittest

    一. 什么是单元测试?单元测试的对象是什么? 1: 什么是单元测试? 按照定义,单元测试就是对单个模块或者单个类或者单个函数进行测试,一般是开发做的,按照阶段分,一般就是单元测试.集成测试.系统测试. ...

  8. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unit ...

  9. Python+Selenium ----unittest单元测试框架

    unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...

随机推荐

  1. P1048 采药

    题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个 ...

  2. 一:安装centos 7最小编程环境 xfce桌面

    1, u盘制作安装盘------------------------------------------------------安装时, table或者e进入编辑选项    如果不知道你的u盘的盘符 ...

  3. web & Rich Text Editor

    web & Rich Text Editor 富文本编辑器 http://www.wangeditor.com/ https://github.com/wangfupeng1988/wangE ...

  4. MySQL的Date()函数拼接

    SELECT date_format(DATE(a.date_created),'%Y-%c-%d') As dateCreate, SUM(a.sm) As sumAmount, sum(order ...

  5. 使用pymongo.find查询很慢的解决方式

    1.前言: mongodb部署在阿里云服务器, mongodb中collection存储了百万条记录. 需求:优化查询指定时间段内的所有数据的查询时间,结果有百万级别. 最初:313587条记录耗时: ...

  6. 记一次 Hibernate 插入数据中文乱码报错解决

    错误描述 程序运行,向表中插入数据(包含中文)报错:\xE6\xB2\x88\xE9\x9B\xAA... 但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行.而且 ...

  7. Manthan, Codefest 16 C

    建trie树,刚好字符串是反向的,直接在原图上向前搜索就OK了……………… 可怜的我竟然用了RK来hash,在test67那里T了…… 贴个RK的 #include <iostream> ...

  8. 1.4-动态路由协议OSPF①

    r2#sh ip ospf border-routers 查看ABR 修改OSPF接口优先级 r1(config)#int e 0 r1(config-if)#ip ospf priority 100 ...

  9. [Vue @Component] Place Content in Components with Vue Slots

    Vue's slots enable you to define where content of a component should land when you define the conten ...

  10. Java深入浅出系列(四)——深入剖析动态代理--从静态代理到动态代理的演化

    静态代理 如上图,在程序执行之前.程序猿就要编写Proxy.然后进行编译,即在程序执行之前,代理类的字节码文件就已经生成了(Proxy类的class文件已经存在了). 静态代理尽管在增强现有的接口业务 ...