`
m4774411wang
  • 浏览: 113050 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

python unittest单元测试方法和用例

 
阅读更多

python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest

先介绍下unittest的基本使用方法:

1.import unittest
2.定义一个继承自unittest.TestCase的测试用例类
3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
4.定义测试用例,名字以test开头。
5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
6.调用unittest.main()启动测试
7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。

下面是unittest模块的常用方法:
assertEqual(a, b)     a == b      
assertNotEqual(a, b)     a != b      
assertTrue(x)     bool(x) is True      
assertFalse(x)     bool(x) is False      
assertIs(a, b)     a is b     2.7
assertIsNot(a, b)     a is not b     2.7
assertIsNone(x)     x is None     2.7
assertIsNotNone(x)     x is not None     2.7
assertIn(a, b)     a in b     2.7
assertNotIn(a, b)     a not in b     2.7
assertIsInstance(a, b)     isinstance(a, b)     2.7
assertNotIsInstance(a, b)     not isinstance(a, b)     2.7

下面看具体的代码应用:

首先写了一个简单应用:

import random
import unittest

class TestSequenceFunctions(unittest.TestCase):

   def setUp(self):
       self.seq = range(10)

   def test_shuffle(self):
       # make sure the shuffled sequence does not lose any elements
       random.shuffle(self.seq)
       self.seq.sort()
       self.assertEqual(self.seq, range(10))

       # should raise an exception for an immutable sequence
       self.assertRaises(TypeError, random.shuffle, (1,2,3))

   def test_choice(self):
       element = random.choice(self.seq)
       self.assertTrue(element in self.seq)

   def test_error(self):
          element = random.choice(self.seq)
          self.assertTrue(element not in self.seq)


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

下面是写了一个简单的应用,测试下面4个网址返回的状态码是否是200。

import unittest
import urllib

class TestUrlHttpcode(unittest.TestCase):
   def setUp(self):
       urlinfo = ['http://www.baidu.com','http://www.163.com','http://www.sohu.com','http://www.cnpythoner.com']
       self.checkurl = urlinfo

   def test_ok(self):
       for m in self.checkurl:
           httpcode = urllib.urlopen(m).getcode()
           self.assertEqual(httpcode,200)

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

如果有的网址打不开,返回404的话,测试则会报错

 如果有的网址打不开,返回404的话,测试则会报错

  ERROR: test_ok (__main__.TestUrlHttpcode)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "jay.py", line 12, in test_ok
    httpcode = urllib.urlopen(m).getcode()
  File "/usr/lib/python2.7/urllib.py", line 86, in urlopen
    return opener.open(url)
  File "/usr/lib/python2.7/urllib.py", line 207, in open
    return getattr(self, name)(url)
  File "/usr/lib/python2.7/urllib.py", line 462, in open_file
    return self.open_local_file(url)
  File "/usr/lib/python2.7/urllib.py", line 476, in open_local_file
    raise IOError(e.errno, e.strerror, e.filename)
IOError: [Errno 2] No such file or directory: 'fewfe.com'

----------------------------------------------------------------------
Ran 1 test in 1.425s

FAILED (errors=1)
 

也有其他的unittest方法,用于执行更具体的检查,如:

Method     Checks that     New in
assertAlmostEqual(a, b)     round(a-b, 7) == 0      
assertNotAlmostEqual(a, b)     round(a-b, 7) != 0      
assertGreater(a, b)     a > b     2.7
assertGreaterEqual(a, b)     a >= b     2.7
assertLess(a, b)     a < b     2.7
assertLessEqual(a, b)     a <= b     2.7
assertRegexpMatches(s, re)     regex.search(s)     2.7
assertNotRegexpMatches(s, re)     not regex.search(s)     2.7
assertItemsEqual(a, b)     sorted(a) == sorted(b) and works with unhashable objs     2.7
assertDictContainsSubset(a, b)     all the key/value pairs in a exist in b     2.7
assertMultiLineEqual(a, b)     strings     2.7
assertSequenceEqual(a, b)     sequences     2.7
assertListEqual(a, b)     lists     2.7
assertTupleEqual(a, b)     tuples     2.7
assertSetEqual(a, b)     sets or frozensets     2.7
assertDictEqual(a, b)     dicts     2.7
assertMultiLineEqual(a, b)     strings     2.7
assertSequenceEqual(a, b)     sequences     2.7
assertListEqual(a, b)     lists     2.7
assertTupleEqual(a, b)     tuples     2.7
assertSetEqual(a, b)     sets or frozensets     2.7
assertDictEqual(a, b)     dicts     2.7

你可以用unittest模块的更多方法来做自己的单元测试。

分享到:
评论

相关推荐

    使用Python的unittest框架来编写测试用例

    总的来说,Python的unittest框架是进行单元测试和集成测试的强大工具,它为编写可重复、可维护的测试代码提供了标准的结构和方法。了解并熟练掌握unittest框架,对于保证代码质量和提高开发效率至关重要。通过阅读...

    python+unittest失败重新运及用例依赖.docx

    通过上述方法,我们成功地实现了Python + unittest框架下的失败重试机制,并解决了常见的重复运行和测试报告冗余问题。这种方法不仅提高了自动化测试的效率,还提升了测试结果的准确性。当然,针对不同的项目需求,...

    17任务十七、unittest框架批量执行测试用例(二).docx

    在Python的世界里,unittest是一个内置的测试框架,用于编写和组织单元测试。本任务的核心是学习如何使用unittest框架批量执行测试用例,这涉及到TestLoader、TestSuite和TextTestRunner这三个关键组件。让我们深入...

    python unittest自动化接口测试框架

    unittest提供setUp和tearDown方法,分别在每个测试用例开始前和结束后执行,可以用来初始化测试所需的数据或资源,以及清理操作。 对于压缩包中的"InterFace-testing"文件,它可能包含了测试框架的具体实现,包括...

    Python自动化测试套组合测试用例

    在Python中,unittest模块是内置的测试框架,它提供了一套完善的测试工具,包括测试类、断言方法、测试套件和测试运行器等。unittest模块基于xUnit测试框架,适用于编写单元测试、集成测试等不同类型的测试。 要...

    16任务十六、unittest框架批量执行测试用例(一).docx

    在Python的自动化测试领域,unittest是标准的测试框架,用于编写和组织单元测试。这个框架提供了丰富的功能,包括断言方法、测试套件(TestSuite)和测试运行器(TextTestRunner)等,使得测试用例的批量执行变得...

    python,三角形测试,黑盒测试,白盒测试,unittest,HTMLTestRunner生成测试报告,.rar

    unittest是Python内置的单元测试框架,它允许开发者编写可重复运行的测试用例,以验证代码模块的功能正确性。unittest提供了断言方法、测试套件、测试加载器等功能,方便组织和执行测试。在给定的文件列表中,...

    python单元测试unittest实例详解-电脑资料.pdf

    unittest是Python内置的一个测试框架,它提供了丰富的工具和类来编写和运行单元测试。 unittest框架的主要组件包括: 1. `TestCase`: 这是所有测试用例的基础类,你可以创建子类并定义方法来测试你的代码。每个...

    Python单元测试与测试用例简析

    在Python编程的学习过程中,除了掌握单元测试和测试用例的知识,还可以深入学习更多关于Python的知识,比如Python函数的使用技巧、面向对象程序设计、数据结构与算法、字符串操作、编码操作等。相关的教程和专题包括...

    python unittest基本介绍

    Python 自带了一个非常强大的单元测试框架——`unittest`。 #### 一、`unittest` 模块简介 `unittest`(以前被称为 `PyUnit`)是 Python 的标准库之一,它提供了一套用于编写单元测试的工具。使用 `unittest` 进行...

    Python基于unittest实现测试用例执行

    利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块; 一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例,下面分别...

    Python unittest单元测试框架实现参数化

    ### Python unittest单元测试框架实现参数化 #### 一、引言 在软件开发过程中,单元测试是确保代码质量的关键步骤之一。Python作为一种广泛使用的编程语言,提供了多种单元测试框架,其中`unittest`是最为常用的一...

    Python-基于unittest的测试报告柱状图饼图错误截图失败重试等功能

    在Python的测试领域,`unittest`是官方提供的一种标准测试框架,它提供了丰富的断言方法和测试组织结构,便于编写和执行单元测试。本话题主要关注如何在unittest基础上实现更高级的功能,如生成测试报告、可视化图表...

    python3+selenium3单元测试框架(unittest)使用介绍

    单元测试是软件开发中不可或缺的一个步骤,它允许开发者对代码进行模块化测试,确保每个单元的正确性。...通过合理运用unittest框架提供的各种工具和方法,可以显著提高测试的效率和覆盖率,为软件质量提供可靠保障。

    python自动化之-项目测试用例设计+读取Excel测试用例-代码

    本文将深入探讨如何使用Python进行项目测试用例设计,并介绍如何利用Python读取Excel文件作为测试数据来源,以提升测试效率和准确性。 首先,测试用例设计是软件测试过程中的核心部分,它定义了对软件功能验证的...

Global site tag (gtag.js) - Google Analytics