python 单元测试unittest

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

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

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

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

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

例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()

测试结果

..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.003s

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()

结果

..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.001s

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")
时间: 2024-08-26 16:17:42

python 单元测试unittest的相关文章

python单元测试-unittest

python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1.介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittest.TestCase的测试用例类 3)定义setUp和tearDown,在每个测试用例前后做一些辅助工作. 4)定义测试用例,名字以test开头. 5)一个测试用例应该只测试一个方面,测试目的和测试内容应很明确.主要是调用assertEqual.assertRaises等断言方法判断程序执行结果和预

python单元测试unittest

Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载TestCase到TestSuite中的 TextTestRunner是来执行测试用例的,测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少

Python单元测试unittest与HTMLTestRunner报告生成

本文为简单介绍,使用python自带模块unittest来进行单元测试 首先我们有一个需要测试的类,employee.py  定义了涨薪的方法.我们需要测试这个类的功能是否正确. 1 class Employee(): 2 3 def __init__(self,firstName,lastName,money): 4 self.firstName = firstName 5 self.lastName = lastName 6 self.money = money 7 8 def give_r

python单元测试unittest框架

环境:PyCharm 2016.2 + python 3.5 待测试的类:(Widget.py) 测试类:(Auto.py) 测试结果: 总结:1.第一步:先写好测试类2.第二步:导入unittest模块及测试的类,运用setup()方法做测试前的准备工作,如建立数据库连接,运用teardown()方法做测试后的清除工作,如取消数据库的链接,再对类中的方法逐一做测试.3.第三步: 写suite()的全局方法,将要测试的方法,一一加入.测试结果,有几个测试用例就有几个. 最后显示OK,表示通过.

Python单元测试--使用装饰器实现测试跳过和预期故障

Python单元测试unittest中提供了一下四种装饰器实现测试跳过和预期故障.(使用Python 2.7.13) 请查考Python手册中: https://docs.python.org/dev/library/unittest.html The following decorators implement test skipping and expected failures: #以下装饰器实施测试跳过和预期故障: @unittest.skip(原因) Unconditionally s

Python单元测试框架 unittest

Python单元测试框架 作者: Steve Purcell, <stephen_purcell at yahoo dot com>翻译: Heiz, <heiz dot yuan at gmail dot com>项目网站: http://pyunit.sourceforge.net/ 目录 概况 系统要求 使用PyUnit构建自己的测试 安装 测试用例介绍 创建一个简单测试用例 复用设置代码:创建固件 包含多个测试方法的测试用例类 将测试用例聚合成测试套件 嵌套测试用例 测试代

Python单元测试框架unittest之深入学习

前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图(下面的类图以及解释均来源于网络,原文链接): 一个TestCase的实例就是一个测试用例.什么是测试用例呢?就是一个完整的测试流程,包括测

Python单元测试框架:unittest(一)

主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述.命令行接口.测试案例自动搜索.创建测试代码.构建测试套件方法等内容 概述 1.测试脚手架(test fixture) 测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown(). 2.测试案例(test case) 最小的测试单元. 3.测试套件(test suite) 测试案例的集合. 4.测试运行器(test runner) 测试执行的组件. 命令行接口 可以用命令行运

Python 单元测试 & 文档测试

1.1   单元测试 1.1.1   单元测试编写 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 编写一个Dict类,这个类的行为和dict一致,但是通过属性来访问. >>> d = Dict(a=1, b=2) >>> d['a'] 1 >>> d.a 1 class dict编写如下: [[email protected] python]# cat mydict.py #!/usr/bin/python # -*- co