您的位置:首页 > 编程语言 > Python开发

Python unittest小结

2013-11-20 16:14 393 查看
上周还上了test部分的内容,包括python unittest, django unittest,
java JUnit还有Android
Test的部分内容,这周开始对这些分别总结,其中有借鉴网上部分内容的,会在文中声明。

本文部分内容参考自:http://www.cnpythoner.com/post/303.html 感谢原作者的付出

python内部自带了一个单元测试的模块unittest,针对于在eclipse下开发python,它的基本使用方法如下:

1.import unittest

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

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

4.定义测试用例,所有的测试函数名字必须以test开头。如:def
test_number(self)

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

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

7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则,在console输出(本文例子中情况):

..

----------------------------------------------------------------------

Ran 2 tests in 0.002s

OK

下面是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

也有其他的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

附上自己写的一个超级简单小测试程序,做为参考:

#pourtest.py

def multiply(a, b):

return
a*b

#test.py

import unittest

from pourtest import multiply

class UnTest(unittest.TestCase):

def
setUp(self):


pass

def
test_number(self):



self.assertEqual(multiply(2,4), 8)




def
test_string(self):



self.assertEqual(multiply(3,'a'), 'aaa')




if __name__ == '__main__':




unittest.main()

另外一点需要注意的是,在写好测试单元后,在eclipse中需要Run as Python
Run而不是Python unit-test,这点大家需要留意一下。

So far so easy, so, end...:)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: