当前位置: 首页 > news >正文

python 单元测试 unittest

阅读目录

  • 例1:测试函数
  • 例2:测试类
  • 例3:构造测试集

单元测试可以帮助我们准确迅速地定位出现问题的模块和单元。

单元测试的对象是函数,必须有输出结果(哪怕是异常输出),以便单元测试模块能够捕获返回值,并且与预期值进行比较,从而得出测试通过与否

单元测试的加载可以通过unittest.main()来启动单元测试的测试模块。

而testsuit里存放的就是单元测试的用例,下面分别列出了2种方法的使用。

  • setUp():             每个测试函数运行前运行
  • tearDown():        每个测试函数运行完后执行
  • setUpClass():      必须使用@classmethod 装饰器,所有test运行前运行一次
  • tearDownClass(): 必须使用@classmethod装饰器,所有test运行完后运行一次

:引入模块   import unittest 

回到顶部

例1:测试函数

复制代码
def sum(x, y):
    return x + y

def sub(x, y):
    return x - y
复制代码

单元测试模块

复制代码
class mytest(unittest.TestCase):   #所有执行测试的类都继承TestCase类
    #初始化工作
    def setUp(self):
        pass
    #清退工作
    def tearDown(self):
        pass
    #具体的测试用例,一定要以test开头
    def testsum_1(self):
        self.assertEqual(sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(sum(1, 2), 2, "test sum fail")

    def testsub(self):
        self.assertEqual(sub(2, 1), 1, "test sub fail")

if __name__ == "__main__":
    unittest.main()
复制代码

测试结果

1
2
3
4
5
6
7
8
9
10
11
12
13
..F
======================================================================
FAIL: testsum_ 2  (__main__.mytest)
----------------------------------------------------------------------
Traceback (most recent call last):
   File  "E:/task/��Ԫ����/test1.py" , line  18 , in testsum_ 2
     self.assertEqual(sum( 1 2 ),  2 "test sum fail" )
AssertionError: test sum fail
 
----------------------------------------------------------------------
Ran  3  tests in  0.003 s
 
FAILED (failures= 1 )

:F表示fail, F前的表示测试通过,有E的话表示程序自身异常

 

回到顶部

例2:测试类

复制代码
class myclass:
    def __init__(self):
        pass

    def sum(self, x, y):
        return x + y

    def sub(self, x, y):
        return x - y
复制代码

测试代码

复制代码
class mytest(unittest.TestCase):
    def setUp(self):
        self.tclass = myclass()

    def tearDown(self):
        pass

    def testsum_1(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsub(self):
        self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail")

if __name__ == "__main__":
    unittest.main()
复制代码

结果

1
2
3
4
5
6
7
8
9
10
11
12
13
..F
======================================================================
FAIL: testsum_ 2  (__main__.mytest)
----------------------------------------------------------------------
Traceback (most recent call last):
   File  "E:/task/��Ԫ����/test2.py" , line  24 , in testsum_ 2
     self.assertEqual(self.tclass.sum( 1 2 ),  5 "test sum fail" )
AssertionError: test sum fail
 
----------------------------------------------------------------------
Ran  3  tests in  0.001 s
 
FAILED (failures= 1 )

 

回到顶部

例3:构造测试集

被测代码

复制代码
class myclass:
    def __init__(self):
        pass

    def sum(self, x, y):
        return x + y

    def sub(self, x, y):
        return x - y
复制代码

测试代码

复制代码
class mytest(unittest.TestCase):
    def setUp(self):
        self.tclass = myclass()

    def tearDown(self):
        pass

    def testsum_1(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail")

    def testsub(self):
        self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail")

def suite():
    suite = unittest.TestSuite()
    suite.addTest(mytest("testsum_1"))
    suite.addTest(mytest("testsum_2"))
    suite.addTest(mytest("testsub"))
    return suite

if __name__ == "__main__":
    unittest.main(defaultTest = "suite")
复制代码

 








本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/4447307.html,如需转载请自行联系原作者


相关文章:

  • 基础的POJ学习
  • 冲刺NO.8
  • ajax同步和异步
  • jBPM开发入门指南(3)
  • Git与GitHub学习笔记(七)Windows 配置Github ssh key
  • java序列化方式性能比较
  • 【元气云妹】短信服务
  • sNote(自己的学习笔记)想法
  • Tomcat配置-学习笔记1---核心配合文件server.xml整体结构
  • 熔断器 Hystrix 源码解析 —— 命令执行(二)之执行隔离策略
  • Java Applet 基础
  • 使用svnadmin对VisualSVN进行项目迁移
  • 洛谷——P1123 取数游戏
  • SpringMVC-@CookieValue
  • php get_called_class()函数与get_class函数的区别
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • 78. Subsets
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CEF与代理
  • jdbc就是这么简单
  • LeetCode18.四数之和 JavaScript
  • Linux CTF 逆向入门
  • Mithril.js 入门介绍
  • mongodb--安装和初步使用教程
  • spark本地环境的搭建到运行第一个spark程序
  • spring + angular 实现导出excel
  • Sublime text 3 3103 注册码
  • 计算机常识 - 收藏集 - 掘金
  • 力扣(LeetCode)965
  • 码农张的Bug人生 - 初来乍到
  • 前端
  • 前端自动化解决方案
  • 区块链将重新定义世界
  • 深度学习中的信息论知识详解
  • 数组的操作
  • 异常机制详解
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 【云吞铺子】性能抖动剖析(二)
  • # centos7下FFmpeg环境部署记录
  • #大学#套接字
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (C语言)二分查找 超详细
  • (day 12)JavaScript学习笔记(数组3)
  • (python)数据结构---字典
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三) diretfbrc详解
  • (转)Google的Objective-C编码规范