Python自动化之unittest框架

在软件架构的层面来讲,测试最重要的步骤之一是发生在软件开发的时候。而软件最终的功能是软件实现细节实现的产物。在金字塔模型的测试理论体系中,单元测试是最底层的测试,而且是测试覆盖最多的层面。在自动化所有的测试体系中,不管是单元测试,还是接口测试以及基于UI的自动化测试,都需要单元测试框架,在Python语言中,最常用的单元测试框架是unittest和pytest,今晚主要来介绍unittest单元测试框架,后期逐步的介绍pytest测试框架在自动化测试中的应用。

在Python语言中,标准库unittest模块提供了对单元测试的支持,unititest模块的主要部分,如下图所示。

在如上图中,可以看到unittest模块主要模块是测试用例,测试固件,测试套件,测试执行,测试报告,以及测试断言里面提供的方法。下面就该部分详细的做下解释:

测试用例:unittest模块提供了TestCase类,类TestCase为测试用例提供了支持。通过继承TestCase来设置一个新的测试类,和设置测试方法,每个测试方法通过实际响应结果与预期结果对比来实现单元测试。

测试固件:测试固件SetUp()和TearDown()表示一个或者多个测试以及清理工作所需要的所有设置和准备。如UI自动化测试中初始化打开浏览器和关闭浏览器,数据库测试中连接数据库与关闭数据库。

测试套件:测试套件顾名思义是测试用例的集合。当然一个测试套件也可以保护其他的测试套件,测试套件允许对在软件系统上执行功能相似的测试的测试用例进行分组。在unittest模块中通过TestSuite类提供对测试套件的支持。

测试执行:测试执行是管理和运行测试用例的对象,并向测试人员提供结果。一般性的可以在IDE中直接执行,或者在命令行中执行。

测试结果:测试结果类管理着测试结果的输出。在测试结果中,保存了成功的,失败的,和错误的,以及执行的测试用例的个数。在unittest模块中,由TestResult类来实现,它具有一个具体的,默认的TextTestResult 类实现。

下面结合一个简单的函数测试来说明unittest模块来自动化测试中的应用,源码为:

#!/usr/bin/env python
#coding:utf-8
def add(a,b):
   return a/b
import  unittest

class AddTest(unittest.TestCase):
   def test_add_001(self):
      self.assertEqual(add(4,2),2)

   def test_add_002(self):
      self.assertEqual(add(3,2),1.5)

   def test_add_003(self):
      self.assertRaises(ZeroDivisionError,add,1,0)

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

执行如上代码后,执行的结果如下图所示。

后续公众号会持续更新关于Python语言的自动化测试知识体系,感谢您的关注。如您对我的课程感兴趣,可扫描二维码关注。

本文分享自微信公众号 - Python自动化测试(wuya-python)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券