python-unitest模块总结,python-unitest模块,一、为什么写单元测试


一、为什么写单元测试:
写测试的同时会对源码有更深的理解,毕竟读懂源码大体逻辑才能写测试(或别人告诉你代码的功能和返回值等)
写测试有点浪费感情,没啥意思。没有写功能来的痛快。但是当你调整代码或代码重构的时候就明白没有测试的痛苦了。
测试可以让问题更容易定位,一般的单元测试针对的是函数或方法这种小的代码块,不至于让你出问题时像无头的苍蝇。

二、python的unittest模块的一些名词(读起来有些懵逼,可以大致看一下记住名词,照着示例先敲一下看看结果。)
test fixture表示执行一个或多个测试所需的准备工作,以及任何关联清理操作。这可能涉及例如创建临时或代理数据库,目录或启动服务器进程。
test case是单元测试的最小单位。它检查对特定输入集的特定响应。unittest 提供了一个基类, TestCase可用于创建新的测试用例。
test suite是test cases,test suites或者两者的集合。它用于聚合应该一起执行的测试。
test runner 是一个协调测试执行并向用户提供结果的组件。执行者可以使用图形界面,文本界面,或返回特殊值来指示执行测试的结果。

三、下面是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方法():
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

未完:马上补充

python-unitest模块总结

评论关闭