步骤:
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. 经典书籍---MySQL经典书籍下载

    以下是一些经典的MySQL书籍电子版,括号内为提取码,若需自取. 欢迎阅读纸质版,尊重作者版权 高性能MySQL_中文版 [ hre3 ] 高性能MySQL_英文版[ m2xj ] MySQL技术内幕 ...

  2. zabbix+docker

    由于公司线上服务器数量太少,又要用于生产,领导让上zabbix,但熟知zabbix搭建需要LAMP或者LNMP,如果和生产服务器混搭的话,不方便管理,也怕出问题,所以就先使用docker方式搭建管理. ...

  3. Haoop Mapreduce 中的FileOutputFormat类

    FileOutputFormat类继承OutputFormat,需要提供所有基于文件的OutputFormat实现的公共功能,主要有以下两点: (1)实现checkOutputSpecs方法 chec ...

  4. 通过request对象获取客户端的相关信息

    通过request对象获取客户端的相关信息 制作人:全心全意 通过request对象可以获取客户端的相关信息.例如HTTP报头信息.客户信息提交方式.客户端主机IP地址.端口号等等. request获 ...

  5. CCF201609-1 最大波动 java (100分)

    试题编号: 201609-1 试题名称: 最大波动 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明正在利用股票的波动程度来研究股票.小明拿到了一只股票每天收盘时的价格,他 ...

  6. 使用scrapy 爬取酷狗音乐歌手及歌曲名并存入mongodb中

    备注还没来得及写,共爬取八千多的歌手,每名歌手平均三十首歌曲算,大概二十多万首歌曲 run.py #!/usr/bin/env python # -*- coding: utf-8 -*- __aut ...

  7. 洛谷 2048 BZOJ 2006 [NOI2010]超级钢琴

    [题解] 贪心题.设五元组(mx,pos,l,r1,r2)表示最大值为mx,取得最大值的区间右端点为pos,区间左端点为l,区间右端点的可选区间为[r1,r2]. 每次从堆里拎出最大值,然后把这个区间 ...

  8. [bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)

    Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...

  9. ACE in Action

    ACE in Action https://cdn.xgqfrms.xyz/web-ide/index.html TinyMCE https://panjiachen.github.io/vue-el ...

  10. python之MD5、base64\base32解密

    # -*- coding:utf-8 -*- import hashlib import base64 # 求最大公约数gys # def gys(m, n): # c = 1 # while(c ! ...