`

unittest测试框架之assert断言

阅读更多

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

 

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

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

下面看具体的代码应用:

首先写了一个简单应用:

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的接口API自动化测试的项目,之前用的是unittest测试框架,现在改成pytest测试框架.zip

    unittest框架提供了诸如TestCase类、assert系列方法等基础测试组件,允许开发者编写结构化的测试用例。然而,当测试需求变得复杂时,unittest可能显得不够灵活。例如,它对于参数化测试支持不足,且异常处理相对繁琐...

    Python unittest单元测试框架及断言方法

    Python的unittest模块是用于编写和运行自动化测试的官方标准库,它是基于xUnit测试框架模型设计的,广泛应用于Python项目的单元测试。unittest提供了一套结构化的框架,使得开发者能够方便地编写、组织和执行测试...

    cpp-UnitTest一个轻量级的C的单元测试框架

    `cpp-UnitTest` 是一个专为C++编程语言设计的轻量级单元测试框架,它为开发者提供了一种方便、高效的方式来验证代码的各个模块是否按照预期工作。单元测试是软件开发过程中的重要组成部分,通过编写针对代码各个部分...

    python-unittest基本介绍.docx

    Python的unittest模块是内置的单元测试框架,它提供了一套结构化的测试方法,使得开发者能够方便地编写和组织测试代码。unittest模块源自Java中的JUnit测试框架,因此在Python中也遵循类似的模式。 unittest的基本...

    fortran-并行化fortran单元测试框架-UnitTest.zip

    `UnitTest`框架就是为了解决这个问题,专为Fortran提供了进行单元测试的能力。本文将深入探讨Fortran的并行化以及如何使用`UnitTest`框架进行单元测试。 首先,让我们了解一下Fortran的并行化。Fortran支持两种主要...

    webUI自动化测试框架(Python+selenium)

    4. **实现断言**:在测试脚本中加入断言(如`assert`语句)来验证实际结果是否符合预期。这有助于找出测试过程中的问题。 5. **异常处理**:为了使测试更加健壮,我们需要捕获和处理可能遇到的异常,如元素未找到、...

    unittest接口自动化框架源码

    unittest框架提供了丰富的断言方法,如assertEqual、assertTrue、assertFalse等,用于检验测试结果是否符合预期。测试用例(TestCase)是unittest的基本单元,你可以定义自己的测试类继承自unittest.TestCase,并在...

    Python-用Python编写的BabySplot初学者测试框架

    Python中的测试框架如unittest、pytest和nose等,提供了编写测试用例、组织测试套件和生成测试报告等功能。BabySplot作为一个入门级框架,可能简化了这些高级框架的一些复杂性,以更直观的方式呈现测试的核心概念。...

    Python+Selenium框架设计篇之10-unittest执行脚本方法之discover()方法

    在unittest中,测试用例(TestCase)是包含一个或多个断言(assert)的类,用于验证代码的行为。测试套件(TestSuite)可以组合多个测试用例或测试套件,以便一起执行。 unittest的discover()方法是一个非常实用的...

    4-Pytest框架+Allure-V8.3-2021.01.18.pdf

    pytest框架是Python的第三方单元测试框架,它比自带的unittest框架更加简洁和高效。pytest框架支持315种以上的插件,同时兼容unittest框架。这使得我们在unittest框架迁移到pytest框架的时候不需要重写代码。 ...

    C++ UnitTest framework

    总的来说,C++ UnitTest框架是保证代码质量和可靠性的重要工具,尤其是在大型复杂项目中。通过在VS2005中利用这个框架,开发者可以有效地测试和调试他们的C++代码,从而减少错误,提升软件的稳定性和可靠性。

    unitTest+关键字驱动实现接口自动化测试.zip

    unitTest是Python内置的单元测试框架,它提供了断言方法、测试发现、测试套件等功能,便于编写和组织测试代码。在接口自动化测试中,我们通常会为每个接口编写一个或多个测试用例,利用unitTest的TestCase类定义这些...

    开源C++单元测试框架整理

    `gtest`提供了多种断言宏来辅助开发者进行测试,其中最基本的断言宏之一是`EXPECT_EQ`,用于判断两个表达式的值是否相等。例如: ```cpp TEST(FooTest, HandleNoneZeroInput) { EXPECT_EQ(2, Foo(4, 10)); // 检查...

    Python接口测试框架实战与自动化进阶

    1. 测试框架的选取:在Python中,有许多用于接口测试的框架,比如requests库、pytest框架、unittest框架以及专门的接口测试框架如HttpRunner等。每一个框架都有自己的特点,适用于不同的测试场景。 2. 请求的构造:...

    TestUnit #5.0_unittest#5_

    在IT行业中,单元测试(Unit Testing)是一种软件开发过程中的重要环节,用于验证代码的各个独立部分是否按预期工作。`unittest`是Python编程语言...理解和掌握unittest框架对于任何Python开发者来说都是必备技能之一。

    Python自动化测试实战篇(4)selenium+unttest+ddt实现自动化用例测试,模拟用户登陆点击交互测试

    在本篇Python自动化测试实战中,我们将探讨如何利用selenium、unittest和ddt库来构建一个功能完善的自动化测试框架,模拟用户登录、点击等交互行为,并通过assert进行断言检查,确保测试用例的准确性和覆盖率。...

    Python-pytest自动化测试框架

    - **断言**:pytest内置了丰富的断言方法,如`assert`,且支持自定义断言。 2. **测试发现机制** - pytest自动发现测试:它会遍历指定目录下的所有Python文件,找出符合命名规则的测试函数。 - **固定参数测试**...

    Python 测试框架unittest和pytest的优劣

    unittest是Python内置的测试框架,是进行单元测试的首选方法之一。其特点主要包括: 1. 自动化测试:它支持测试用例的初始化、关闭和聚合等功能。 2. 类组织方式:unittest采用类(class)的方式来组织测试用例,可以...

Global site tag (gtag.js) - Google Analytics