博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python unittest基本介绍
阅读量:6224 次
发布时间:2019-06-21

本文共 3625 字,大约阅读时间需要 12 分钟。

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

 

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

 1)import unittest 

 2)定义一个继承自unittest.TestCase的测试用例类

 3)定义setUp和tearDown,在每个测试用例前后做一些辅助工作。

 4)定义测试用例,名字以test开头。 

 5)一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。 

 6)调用unittest.main()启动测试

 7)如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。

 

2、 下面是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 inself.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)

3也有其他的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模块的更多方法来做自己的单元测试。

转载地址:http://reuna.baihongyu.com/

你可能感兴趣的文章
JS之prototype基础篇
查看>>
如此熟悉 的梦境
查看>>
Dubbo注册到发布执行流程(原理)
查看>>
win7下centos 7安装
查看>>
暗巷网盘快捷下载器 V1.3绿色中文版
查看>>
如何还原Navicat for SQL Server的备份数据
查看>>
《人人都是产品经理》读记
查看>>
Java与C++语言在作用域上的差异浅析
查看>>
解决windows使用rsync同步到Linux权限问题
查看>>
__FILE__,__LINE__,__DATE__,__TIME__
查看>>
《途客圈创业记》读书笔记
查看>>
grep 匹配 以什么开头的内容
查看>>
使用蒙版制作动画
查看>>
windows安装lxml
查看>>
数据库中间件 MyCAT 源码分析 —— SQL ON MongoDB
查看>>
document.documentElement.clientwidth和document.body
查看>>
django orm中利用annotate进行group by
查看>>
CSS3———— animate(),transtion,transfrom.translate()
查看>>
[转载]JAVA中int、String的类型转换
查看>>
C语言的一些常用代码
查看>>