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模块的更多方法来做自己的单元测试。
相关推荐
unittest框架提供了诸如TestCase类、assert系列方法等基础测试组件,允许开发者编写结构化的测试用例。然而,当测试需求变得复杂时,unittest可能显得不够灵活。例如,它对于参数化测试支持不足,且异常处理相对繁琐...
Python的unittest模块是用于编写和运行自动化测试的官方标准库,它是基于xUnit测试框架模型设计的,广泛应用于Python项目的单元测试。unittest提供了一套结构化的框架,使得开发者能够方便地编写、组织和执行测试...
`cpp-UnitTest` 是一个专为C++编程语言设计的轻量级单元测试框架,它为开发者提供了一种方便、高效的方式来验证代码的各个模块是否按照预期工作。单元测试是软件开发过程中的重要组成部分,通过编写针对代码各个部分...
Python的unittest模块是内置的单元测试框架,它提供了一套结构化的测试方法,使得开发者能够方便地编写和组织测试代码。unittest模块源自Java中的JUnit测试框架,因此在Python中也遵循类似的模式。 unittest的基本...
`UnitTest`框架就是为了解决这个问题,专为Fortran提供了进行单元测试的能力。本文将深入探讨Fortran的并行化以及如何使用`UnitTest`框架进行单元测试。 首先,让我们了解一下Fortran的并行化。Fortran支持两种主要...
4. **实现断言**:在测试脚本中加入断言(如`assert`语句)来验证实际结果是否符合预期。这有助于找出测试过程中的问题。 5. **异常处理**:为了使测试更加健壮,我们需要捕获和处理可能遇到的异常,如元素未找到、...
unittest框架提供了丰富的断言方法,如assertEqual、assertTrue、assertFalse等,用于检验测试结果是否符合预期。测试用例(TestCase)是unittest的基本单元,你可以定义自己的测试类继承自unittest.TestCase,并在...
Python中的测试框架如unittest、pytest和nose等,提供了编写测试用例、组织测试套件和生成测试报告等功能。BabySplot作为一个入门级框架,可能简化了这些高级框架的一些复杂性,以更直观的方式呈现测试的核心概念。...
在unittest中,测试用例(TestCase)是包含一个或多个断言(assert)的类,用于验证代码的行为。测试套件(TestSuite)可以组合多个测试用例或测试套件,以便一起执行。 unittest的discover()方法是一个非常实用的...
pytest框架是Python的第三方单元测试框架,它比自带的unittest框架更加简洁和高效。pytest框架支持315种以上的插件,同时兼容unittest框架。这使得我们在unittest框架迁移到pytest框架的时候不需要重写代码。 ...
总的来说,C++ UnitTest框架是保证代码质量和可靠性的重要工具,尤其是在大型复杂项目中。通过在VS2005中利用这个框架,开发者可以有效地测试和调试他们的C++代码,从而减少错误,提升软件的稳定性和可靠性。
unitTest是Python内置的单元测试框架,它提供了断言方法、测试发现、测试套件等功能,便于编写和组织测试代码。在接口自动化测试中,我们通常会为每个接口编写一个或多个测试用例,利用unitTest的TestCase类定义这些...
`gtest`提供了多种断言宏来辅助开发者进行测试,其中最基本的断言宏之一是`EXPECT_EQ`,用于判断两个表达式的值是否相等。例如: ```cpp TEST(FooTest, HandleNoneZeroInput) { EXPECT_EQ(2, Foo(4, 10)); // 检查...
1. 测试框架的选取:在Python中,有许多用于接口测试的框架,比如requests库、pytest框架、unittest框架以及专门的接口测试框架如HttpRunner等。每一个框架都有自己的特点,适用于不同的测试场景。 2. 请求的构造:...
在IT行业中,单元测试(Unit Testing)是一种软件开发过程中的重要环节,用于验证代码的各个独立部分是否按预期工作。`unittest`是Python编程语言...理解和掌握unittest框架对于任何Python开发者来说都是必备技能之一。
在本篇Python自动化测试实战中,我们将探讨如何利用selenium、unittest和ddt库来构建一个功能完善的自动化测试框架,模拟用户登录、点击等交互行为,并通过assert进行断言检查,确保测试用例的准确性和覆盖率。...
- **断言**:pytest内置了丰富的断言方法,如`assert`,且支持自定义断言。 2. **测试发现机制** - pytest自动发现测试:它会遍历指定目录下的所有Python文件,找出符合命名规则的测试函数。 - **固定参数测试**...
unittest是Python内置的测试框架,是进行单元测试的首选方法之一。其特点主要包括: 1. 自动化测试:它支持测试用例的初始化、关闭和聚合等功能。 2. 类组织方式:unittest采用类(class)的方式来组织测试用例,可以...