单元测试框架之unittest(一)

一、单元测试的含义

unittest单元测试框架的设计灵感来源于Junit(Java语言的单元测试框架),它与其他语言的单元测试框架风格相类似,支持自动化测试、为测试共享setUp和shutDown、它可以在将测试用例聚合到一起形成一个集合一起执行的同时在测试报告中展示独立的测试结果。

为了达到此目的,unittest支持几个重要的面向对象式的概念:

1、test fixture

  一个test fixture所做的事情是执行单个或多个测试用例时的准备工作和执行结束后的一些相关清理工作,这包括:创建临时或代理数据库、目录或开始服务器进程。

2、test case

  一个test case 是一个独立的测试单元,针对于一组特定的输入得到的特殊相应的验证,通过继承unittest提供的基类TestCase, 然后可以创建新的测试用例

3、test suite

  一个test suite 是一组测试用例的集合,也可以是一组test suite的集合,也可以两者混合的集合,test suite就是用来聚合你想要一起执行的测试用例的

4、test runner

  一个test runner 是一个协调测试执行并向用户提供执行结果的组建,它可以使用图形界面、文本界面或返回一个特殊值标识测试执行的结果

二、实例代码

下面我们看Python官方给的一个简单的小例子,来测试三个字符串

import unittest

class TestStringMethods(unittest.TestCase):  # 测试类继承了unittest.TestCase类,因此在该类里可以创建新的测试用例

    def test_upper(self):
        self.assertEqual(‘foo‘.upper(), ‘FOO‘)  # ‘foo’是一个字符串,upper()方法会将这个字符串转成大写,assertEqual是unittest提供的一个断言方法,用来比较逗号前后两个值是否相等

    def test_isupper(self):
        self.assertTrue(‘FOO‘.isupper())  # assertTrue也是unittest提供的断言方法,用来判断括号内的内容是真是假,如果是真则断言成功,否则为失败,‘FOO‘是个字符串并且是大写,调用isupper()方法,返回结果
        self.assertFalse(‘Foo‘.isupper())  # assertFalse则正好相反,如果括号内返回为假则断言成功,否则为失败

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

代码解析:

在第三个用例里,定义了一个字符串,s=‘hello world‘, 然后进行了断言,断言的条件里调用了一个split()方法,实际上初学者看到这会比较懵,s.split()到底返回的是什么,它是否等于逗号后边[‘hello‘, ‘world‘]?

学这个东西就是要多试试,那么接下来我们进行一个尝试

启动命令行CMD,进入python环境

定义一个字符串  s = ‘hello world‘, 然后 print(s)回车,我们看一下结果应该是  hello world

那么如果我们print(s.split())呢,结果应该是[‘hello‘, ‘world‘], 到此我们就得到了答案,第三条用例里的断言self.assertEqual(s.split(), [‘hello‘, ‘world‘])是成功,继续向split()对字符串‘hello world‘做了什么?

如果我们print(s.split(2)) 会是什么结果?  如果我们print(s.split(‘o‘))又会是什么结果?

最后的unittest.main(),有了它我们就有了一个简单的方式执行这个脚本,unittest.main()提供了命令行界面运行脚本的方式

假设我们上边的脚本保存在文件testingunit.py里,然后我们启动命令行,输入python  testingunit.py  看看是个什么结果?

如果我们执行python testingunit.py -v 又是什么结果?

原文地址:https://www.cnblogs.com/davieyang/p/10159630.html

时间: 2024-10-10 01:52:53

单元测试框架之unittest(一)的相关文章

Python单元测试框架 :unittest

unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那你用unittest来应该是很轻松的,它们的工作方式都差不多. unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图(下面的类图以及解释均来源于网络,原文链接): 一个TestCase的实例就是一个测试用例.什么是测试用例呢?就是一

unittest单元测试框架之unittest 框架的总结(七)

1. Unittest 是 python 自带的单元测试框架,可以用其作为自动化框架来组织测试用例(测 试用例的执行顺序)的执行. 2. Unittest 框架的流程: 写好 TestCase 通过 TestLoader 加载 TestCase 到 TestSuite 中 通过 TextTestRunner 来原型 TestSuite,结果保存在 TextTestResult 中,我们通过命 令行或者 unittest.main()来执行 3.通过 TextTestRunner 来原型 Test

单元测试框架之unittest(七)

一.摘要 前篇文章已经详细介绍了unittest框架的特性,足以满足我们日常的测试工作,但那并不是unittest的全部,本片博文将介绍一些应该知道但未必能经常用到的内容 然而,想全部掌握unittest还远远不够 二.命令行模式执行用例 unittest框架支持命令行执行测试模块.测试类甚至单独的测试方法 执行测试模块:python -m unittest test_module1 test_module2 ...... 也可以采用路径的方式 python -m unittest tests/

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

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

unittest单元测试框架之unittest 框架的总结2(八)

unittest 下的属性 1.Unittest.TestCase:所有测试用例类继承的基本类 2.Unittest.main():将一个单元测试模块变为可直接运行的测试脚本 If __name__ == "__main__": Unittest.main() 3.Unittest.TestSuite:创建测试套件 4.unittest.TextTestRunner():unittest 框架的 TextTestRunner()类,通过该类下面的 run()方 法来运行 suite 所

单元测试框架之unittest(二)

一.摘要 本章笔者将详细介绍组织测试代码的相关内容,所用的测试例子会是冒泡排序,笔者在从业这么久之后回想很多面试都要问冒泡排序,虽然不知道为什么要问这个,但还是希望大家掌握,它与自动化测试关系不大属于python的基础范畴 在上一篇内容中我们展示了一个小例子,在代码的前两行是如下内容 import unittest class TestStringMethods(unittest.TestCase): 它的意义何在呢? import unittest 导入unittest模块,使得我们可以使用它

单元测试框架之unittest(四)

一.摘要 假设我们有一组测试方法差别非常小,比如仅仅是所需要的参数有少许变化时,我们的自动化测试如何进行?unittest框架为这种场景提供了一种方式,它允许我们用subTest()上下文管理器在一个测试方法内识别这种细小的不同,这么说可能有点晕 实际上我觉得还不如直接看代码更能清晰的表达它为我们的测试带来了什么 二.代码实例 # coding:utf-8 import unittest class NumbersTest(unittest.TestCase): def test_even(se

unittest单元测试框架之unittest工作原理(一)

1.Unittest 核心组件 test case.test suite.test runner.test fixture 2.unittest 静态图 Testcase:一个 testcase 就是一个测试用例.Setup(测试环境的准备).run(测试 执行).teardown(测试环境的还原). Testsuite(集合或套件):多个测试用例的集合就是 suite,一个 suite 可以包含多个 测试用例,也可以嵌套 suite. testLoader:用来加载 testcase 到 te

unittest单元测试框架之unittest案例(二)

1.待测方法: 1 # 加法,返回 a+b 的值 2 def add(a,b): 3 return a+b 4 # 减法,返回 a-b 的值 5 def minus(a,b): 6 return a-b 7 # 乘法,返回 a*b 的值 8 def multi(a,b): 9 return a*b 10 # 除法,返回 a/b 的值 11 def divide(a,b): 12 return a/b 2.测试用例 import unittest from UnittestDemo.mathfun