单元测试unittest 1 基本概念

基本概念

unittest是python自带的单元测试框架,有时候被称为"PyUnit",是python版本的JUint实现。

在学习使用unittest库之前,我们需要了解一下unittest库的一些重要概念:

  • test fixture:
    代表了用例执行前的准备工作和用例执行之后的清理工作。比如在用例执行前创建临时文件和文件夹,又或者启动1个server进程等;
  • test case:
    测试用例,这个相信大家都不陌生。是测试的最小单位,一般检查一组输入的响应(输出)是否符合预期。unittest模块提供了TestCase类来帮助我们创建测试用例;
  • test suite:
    经常被翻译成"测试套件",也有人称为"测试套",是测试用例或测试套件的集合,一般用来把需要一起执行的用例组合到一起;
  • test runner:
    用来执行测试用例并输出测试结果的组件。可以是图形界面或命令行界面;

总之test fixture的功能可以理解成是初始化和清理测试数据及环境。test case是测试用例。test suite是用例集合。test runner的作用是运行用例并返回结果。

补充,要实现更强大的功能还需要其他组件,有测试套件装入组件,参数化组件,数据驱动组件,结果报告组件等。

基本用法举例

我们通过最简单的例子来看一下unittest的基本用法,下面的代码测试了3个python字符串方法,基本上满足了大部分情况下的测试需求。

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()

解释

可以通过继承unittest.TestCase类来定义我们自己的测试用例类,1个测试用例类下面可以有多个测试方法(test)或者叫做测试点。

记住这个套路:测试用例中方法名以test开头的方法才是测试方法,比如上面的例子里定义了3个以test开头的方法,分别是test_upper,test_isupper和test_split。非测试方法是不会被test runner执行的

断言是测试用例的核心。我们使用assertEqual()来判断预期结果,用assertTrue()和assertFalse()来做是非判断,以及用assertRaises()来判断预期的异常是否有被抛出。这些unittest提供的以assert开头的方法就是断言,一般情况下,每个测试方法里都必须有断言

最后, unittest.main()提供了最简单的执行测试用例的方式。当我们从命令行运行上面的代码时,我们可以看到如下的输出

...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

除了使用unittest.main,还有其他的方式可以运行测试用例,比如把最后2行替换为

suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods)
unittest.TextTestRunner(verbosity=2).run(suite)
运行用例,结果将会如下所示

test_isupper (__main__.TestStringMethods) ... ok
test_split (__main__.TestStringMethods) ... ok
test_upper (__main__.TestStringMethods) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

原文地址:https://www.cnblogs.com/candyYang/p/12287921.html

时间: 2024-11-08 20:53:42

单元测试unittest 1 基本概念的相关文章

单元测试UnitTest简介

一.什么是单元测试(UnitTest)? UnitTest 是检查一个函数执行后它的返回结果或者它对系统数据造成的影响是否和我们所期望的一致. 二.为什么要使用单元测试(Unit Test)? 1>保证函数的正确性.如果这个函数在没有保证正确的情况下就被上层代码所调用,那么随着项目的深入,调用的层次越来越多,从而会导致不必要的bug产生,增加了开发难度,降低了工作效率. 2>减轻开发人员的工作量,使开发人员开发的轻松. 三.Unit Test是否是必要的? 1>对于我们所写的代码,会需要

python单元测试unittest

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

单元测试--unittest

单元测试:用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. unittest: python内置的单元测试框架,具备编写用例.测试用例.执行用例.输出报告等自动化框架的条件. unittest的四个核心概念: test case :一个完整的测试单元,执行该测试单元可以完成对某一个问题的验证,完整体现在:测试前环境准备(setUp),执行测试代码(run),以及测试后环境还原(tearDown): test suite :多个测试用例的集合,测试套件或测试计划: test runn

python单元测试-unittest

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

python 单元测试unittest

单元测试可以帮助我们准确迅速地定位出现问题的模块和单元. 单元测试的对象是函数,必须有输出结果(哪怕是异常输出),以便单元测试模块能够捕获返回值,并且与预期值进行比较,从而得出测试通过与否 单元测试的加载可以通过unittest.main()来启动单元测试的测试模块. 而testsuit里存放的就是单元测试的用例,下面分别列出了2种方法的使用. setUp():             每个测试函数运行前运行 tearDown():        每个测试函数运行完后执行 setUpClass(

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测试报告HTMLTestRunner

前提:导入HTMLTestRunner模块--将HTMLTestRunner.py放入python环境变量目录(通过sys.path查看) 步骤1. 创建Testsuite对象 -- unittest.test() 步骤2. 将用例加入到Testsuite -- suite.addTest(GetUserTest('test_get_user')) 步骤3. 创建文件保存测试结果,设置报告内容 -- 注意必须是二进制wb 步骤4. 以报告模版运行testSuite 注意:不能用pycharm的u

IOS-使用XCODE自带的单元测试UnitTest

什么是单元测试? 一听到单元测试这个词感觉很高端,其实单元测试就是为你的方法多专门写一个测试函数.以保证你的方法在不停的修改开发中.保持正确.如果出错,第一时间让你知道,这样从最小单位开始监控来保证软件的质量. 什么时候用到单元测试: 1.写完代码以后:想要验证一下自己写的代码是否有问题. 2.写代码之前:就是写代码之前所有的功能分模块的设计好,测试通过了再写.(我反正是没用过). 3.修复某个bug后:一般修复完某个bug,为了确保修复是成功的,会写测试. 怎么写单元测试 好像废话有点多了,还

python单元测试unittest框架

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