unittest是一个python版本的junit,junit是java中的单元测试框架,unittest实现了很多junit中的概念,比如我们非常熟悉的test case, test suite等,总之,原理都是相通的,只是用不同的语言表达出来。

unittest中的4个重要的概念:test fixture, test case, test suite, test runner,我觉得只有理解了这几个概念,才能真正的理解单元测试的基本原理,下面就主要围绕这几个概念来展开这篇文章。

1、Test Case

一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代 码(run),以及测试后环境的还原(tearDown)。单元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。

2、Test Suite

一个功能的验证往往需要多个测试用例,可以把多个测试用例集合在一起执行的,就是TestSuite,TestSuit用来组装单个测试用例,可以通过addTest加载到TestCase到TestSuit中,从而返回一个TestSuit实例;而且TestSuite也可以嵌套TestSuite。

(TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例)

3、TestRunner

测试的执行也是单元测试中非常重要的一个概念,一般单元测试框架中都会提供非常丰富的执行策略和执行结果;在unittest中,通过TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。TestRunner可以使用图形界面、文本界面,或者返回一个特殊的值的方式来表示测试执行结果。

(这样整个流程就清楚了,首先是要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由 TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模 块中

4、Test Fixture

对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法 来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接以及进行一些初始化,在tearDown() 中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。关于fixture,还 有一个专门的库函数叫做fixtures,功能更加强大,详细介绍可以查阅相应的函数库资料。

下面以一个小例子来说明一下这几个用法

首先编写需要引入的方法test_Count.py

class Count:
def __init__(self,a,b):
self.a=int(a)
self.b=int(b)
def add(self):
return self.a+self.b

  定义一个Count类,有两个参数,定义一个方法,实现两个参数想加

接着写实现该方法测试脚本test_TestCount.py

rom test_Count import Count
import unittest
class TestCount(unittest.TestCase):
def setUp(self):
print("test start")
def test_add(self):
j=Count(5,6)
self.assertEqual(j.add(),11) def test_add2(self):
j=Count(12,11)
self.assertEqual(j.add(),23) def tearDown(self):
print("test end")
if __name__=='__main__':
suite=unittest.TestSuite()
suite.addTest(TestCount("test_add2"))
suite.addTest(TestCount("test_add"))
runner=unittest.TextTestRunner()
runner.run(suite)

  首先引入Test_Count中的Count类,接着在引入unittest框架;然后重写TestCase里面的方法,包括setUp()、测试方法、tearDown();最后在在main下调用unittest框架的TestSuite()类来创建测试套件。通过他提供的addTest()方法来添加测试用例“test_add()”、“test_add()”,再调用unittest框架的TextTestRunner()类,通过它下面的runn()方法来运行suite所组装的测试用例

执行结果如下:

unittest 几个重要概念的更多相关文章

  1. 测试教程网.unittest教程.1. 基本概念

    From:http://www.testclass.net/pyunit/basic_concept/ unittest是python自带的单元测试框架,有时候又被称为”PyUnit”,是python ...

  2. unittest(1)

    一.unittest核心概念 1.unittest四个核心概念 unittest四个核心概念包括:TestCase.TestSuite.TestRunner.Test Fixture TestCase ...

  3. python之unittest框架使用

    一.unittest框架 unittest属于python内置的单元测试框架. 二.unittest框架的核心概念 test case:指测试用例.unittest中提供了一个基本类TestCase, ...

  4. Unittest单元测试框架——BeautifulReport测试报告和Yagmail自动发送邮件

    一.前言 之前在做appium自动化的时候,已经提到过unittest框架的基本概念.用例执行,以及BeautifulReport测试报告的简单使用了(地址:https://www.cnblogs.c ...

  5. [ unittest ] 文档粗读

    参考: https://blog.csdn.net/ljl6158999/article/details/80994979 1.概念提出 unittest最初灵感来自于Junit,它有着和其他单元测试 ...

  6. Python-接口自动化(八)

    unittest单元测试框架(八)    (九)unittest 1.基本概念 python自带的unittest单元测试框架不仅可以适用于单元测试,也适用于WEB自动化测试用例的开发与执行,uint ...

  7. 【python接口自动化框架-unittest】【一】unittest单元测试框架概念

    一.unittst单元测试框架 概念参考:https://docs.python.org/2/library/unittest.html 使用方法:import unittest (引入unittes ...

  8. unittest(二)框架中的概念与断言

    test case一个 TestCase 的实例就是一个测试用例.什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),实现测试过程的代码(run),以及测试后环境的还原( ...

  9. Selenium 2自动化测试实战27(unittest重要概念,test fixture、test case、test suite和test runne)

    一.unittest重要概念 4个重要概念:test fixture.test case.test suite和test runner. 1.Test Case一个TestCase的实例就是一个测试用 ...

随机推荐

  1. Python3常见Exception

    异常                                     描述BaseException                    新的所有异常类的基类Exception        ...

  2. 通过python实现wc基本功能

    ---恢复内容开始--- 1.Github项目地址: https://github.com/zhg1998/ww/blob/master/wc.py 2.项目相关要求: 写一个命令行程序,模仿已有wc ...

  3. linux help

    linux提供了极为详细的帮助工具及文档,一定要养成查找帮助文档的习惯,可以大大减少需要记住的东西,并提高效率. 几乎所有命令都可以使用-h或--help参数获取使用方法,参数信息等. man man ...

  4. OSI结构和TCP/IP模型

    TCP/IP层次模型共分为五层:应用层HTTP.传输层TCP.网络层IP.数据链路层Data-link.物理层physical. 应用层—应用层是所有用户所面向的应用程序的统称.ICP/IP协议族在这 ...

  5. [LeetCode 题解]: Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  6. SQL 语句case when

    简介 case when 一般有两种书写方式,多用于查询判断 1. case 列名 when '' then '空' ' then '成功' ' then '失败' else '其他' end as ...

  7. 关于人脸识别引擎FaceRecognitionDotNet的实例

    根据我上篇文章的分享,我提到了FaceRecognitionDotNet,它是python语言开发的一个项目face_recognition移植.结果真是有喜有忧,喜的是很多去关注了,进行了下载,我看 ...

  8. ffmpeg用法小结,教你抓各大网站视频

    最近受邀朋友帮忙需要抓取一段某酷电影,偶然间发现ffmpeg程序.说到此可能会有人提到you-get和youtube-dl,期间也接触了该两款程序,但是由于版权原因,该软件仅仅可以抓取前几分钟预览版, ...

  9. Chrome离线安装包下载地址

    最新Chrome离线安装包下载地址: x86/x64非管理员安装包: https://www.google.com/intl/zh-CN/chrome/browser/desktop/index.ht ...

  10. .net core2.1 CookieHelper

    /// <summary> /// ** 描述:Cookie for .net core2.1 /// ** 创始时间:2018-11-19 /// ** 修改时间:- /// ** 作者 ...