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 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 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框架来编写测试用例
用例失败自动重新运行一直困扰着诸多测试人员,在网上找寻了半天一直也没有找到一个能够完美解决的方案,普遍都存在最后一个用例失败后会再次重新运行整个suite并在报告中显示多个相同的失败用例的情况。笔者为了...
什么是单元测试 单元测试是用来对一个...把上面这些测试用例放到一个测试模块里,就是一个完整的单元测试 unittest工作原理 unittest中最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture (1)一个T
一。初识单元测试 1)定义: 单元:函数或者是类 单元测试:测试类或者函数 python内置的单元测试框架...3.测试用例的方法名称以 test_ 开头 4.单元测试写入方式(其中TestLogin是测试模块):TestLogin(unittest.TestCa
利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块; 一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例,下面分别...
主要介绍了Python unittest 自动识别并执行测试用例方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
1、单元测试的几个重要概念 (1)Test Case 一个Test Case实例是一个测试用例,完整的测试流程包括测试前准备环境...unittest单元测试框架中,通过TextTestRunner类提供的run()方法来执行test suit和test case,test
在利用单元测试框架执行测试用例的过程中,有时只需要执行一部分用例,或者跳过某些暂不需要执行的用例,python的unittest框架就内置这样的功能。 本文章会讲述以下几个内容: 1、Unittest 如何跳过用例 2、如何...
利用Python开发自动化测试。本脚本可以实现把所有测试用例组合起来。按照用例的用例号顺序执行。本脚本紧供参考。不适合初学者下载。请知悉。
单元测试和测试用例 Python标准库中的模块unittest提供了代码测试工具。 单元测试用于核实函数的某个防霾呢没有问题; 测试用例是一组单元测试,这些单元测试仪器一起核实函数在各种情形下的行为都符合要求。良好的...
任何一个测试用例脚本拿出来都可以单独执行。 3、缺点:开发成本高,用例之间存在重复的操作。比如重复的用户登录和退出。 维护成本高,由于重复的操作,当重复的操作发生改变时,则需要逐一进行脚本的修改。 4....
一、test1——添加用例 登录进来之后会进入这样子的界面 接下来我需要点击测试,进入用例,然后点击建用例 下面是依次进入的代码 self.driver.find_element_by_xpath('//*[@id="navbar"]/ul/li[4]/a').click() ...
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。在说unittest之前,先说几个概念:TestCase也就是测试用例TestSuite多个...
nittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。今天笔者就总结下如何...
单元测试和测试用例 Python标准库中的模块unittest提供了代码测试工具。 单元测试用于核实函数的某个防霾呢没有问题; 测试用例是一组单元测试,这些单元测试仪器一起核实函数在各种情形下的行为都符合要求。良好的...
单元测试和测试用例 Python标准库中的模块unittest提供了代码测试工具。 单元测试用于核实函数的某个防霾呢没有问题; 测试用例是一组单元测试,这些单元测试仪器一起核实函数在各种情形下的行为都符合要求。良好的...
单元测试和测试用例 Python标准库中的模块unittest提供了代码测试工具。 单元测试用于核实函数的某个防霾呢没有问题; 测试用例是一组单元测试,这些单元测试仪器一起核实函数在各种情形下的行为都符合要求。良好的...
unittest模块是Python自带的一个单元测试模块,我们可以用来做单元测试。unittest模块包含了如下几个子模块: 测试用例:TestCase 测试集:TestSuite 加载用例:TestLoader 执行用例:TextTestRunner 首先编写...