unittest举例
步骤:
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举例的更多相关文章
- unittest自动化测试举例:自动读取ymal用例&调用接口并生成报告
用unittest框架写的接口自动化实现过程: 1.编写ymal格式用例: 2.导入ddt模块,该模块的主要功能是帮你读取ymal用例文件,自动获取内容并循环调用函数,具体见代码. 3.导入Beaut ...
- python学习笔记之——unittest框架
unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...
- django的单元测试框架unittest、覆盖率
django的单元测试 指定测试范围: 指定运行某些测试文件./manage.py test --pattern="tests_*.py" -v 2 运行所有测试文件./manag ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...
- unittest单元测试框架之unittest工作原理(一)
1.Unittest 核心组件 test case.test suite.test runner.test fixture 2.unittest 静态图 Testcase:一个 testcase 就是 ...
- 自动化测试===requests+unittest+postman的接口测试
postman是一个跨平台的接口测试工具,下载链接在这里:https://www.getpostman.com/ unittest是一个单元测试框架,python中安装:pip install uni ...
- python之单元测试框架—unittest
一. 什么是单元测试?单元测试的对象是什么? 1: 什么是单元测试? 按照定义,单元测试就是对单个模块或者单个类或者单个函数进行测试,一般是开发做的,按照阶段分,一般就是单元测试.集成测试.系统测试. ...
- Python+Selenium框架设计篇之-简单介绍unittest单元测试框架
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unit ...
- Python+Selenium ----unittest单元测试框架
unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...
随机推荐
- jsonview插件的常见使用方法整理
Jsonview是目前最热门的一款开发者工具插件,确切的来说jQuery JSONView是一款非常实用的格式化和语法高亮JSON格式数据查看器jQuery插件.它是查看json数据的神器. 下载地址 ...
- plot3d
plot3d plot3D a format for structured grid data that was popularized by NASA's CFD visualization Aut ...
- poj 3744 Scout YYF I(递推求期望)
poj 3744 Scout YYF I(递推求期望) 题链 题意:给出n个坑,一个人可能以p的概率一步一步地走,或者以1-p的概率跳过前面一步,问这个人安全通过的概率 解法: 递推式: 对于每个坑, ...
- CTF常用在线工具总结
在线工具 MD5加密 MD5解密(推荐) MD5解密(推荐) MD5解密 escap加解密 维吉尼亚密码 SHA 对称加密AES DES\3DES RC4\Rabbit Quoted-print ...
- noip模拟赛 捡金币
问题描小空正在玩一个叫做捡金币的游戏.游戏在一个被划分成 n行 n列的网格状场地中进行.每一个格子中都放着若干金币,并且金币的数量会随着时间而不断变化. 小空的任务就是在网格中移动,拾取尽量多的金币. ...
- 又见GCD
Problem Description 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b.若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c. Input ...
- 洛谷—— P1339 [USACO09OCT]热浪Heat Wave
P1339 [USACO09OCT]热浪Heat Wave 题目描述 The good folks in Texas are having a heatwave this summer. Their ...
- HDU——2588 GCD
题目大意: 求1~N中与N的最大公约数大于M的个数 思路: 这个题是不是可以想到暴力枚举??对于每一组数据枚举与他的最大公约数大于m的数的个数. 是,这种做法没错误,但是保准你T成狗.... 我们至少 ...
- 16、Java并发性和多线程-死锁
以下内容转自http://ifeve.com/deadlock/: 死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁.死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候. 例如, ...
- 30、Java并发性和多线程-阿姆达尔定律
以下内容转自http://ifeve.com/amdahls-law/: 阿姆达尔定律可以用来计算处理器平行运算之后效率提升的能力.阿姆达尔定律因Gene Amdal 在1967年提出这个定律而得名. ...