Python unittest的基本用法

最基本例子

import unittest
class MyTest(unittest.TestCase):  # 1 继承TestCase
    def test_basic(self):  # 注意方法名的开头必须得是test_xxx
        a = 1+2
        b = 3
        self.assertEquals(a, b)  # 2  使用AssetEquals

if __name__ == '__main__':
    unittest.main()  # 3 run this!!!

准备测试环境

很多时候, 测试之前我们需要设置一下类的一些属性, 我们可以在写一个专门的set_up方法来准备测试环境.

class MapManagerTest(TestCase):
    def set_up(self):
        self.mm = MapManager()
        print 'all nodes:', self.mm._graph.nodes

    def test_is_surrounded(self):
        self.set_up()
        self.mm._graph.nodes['f_52']['on_node'] = [Entity(101, 2)]
        self.mm._graph.nodes['f_50']['on_node'] = [Entity(102, 2)]
        self.assertEquals(bool(self.mm.get_available_nodes(cur_pos='s_46', n=1, kind='s', penetrate=True, blockable=True)), False)
        self.assertEquals(bool(self.mm.get_move_nodes(1, 's_46', 1)), False)

    def test_get_route(self):
        self.set_up()
        self.mm._graph.nodes['f_52']['on_node'] = [Entity(101, 2)]
        print self.mm.get_move_nodes(1, 's_46', 3)
        self.assertEquals(self.mm.get_route('s_6'), ('s_46', 'f_50', 's_38', 'f_42', 'f_35', 'f_29', 's_10', 'f_13', 's_6'))

不过, 其实python的TestCase自带有一个setUp方法, 会默认在初始化TestCase的时候调用. 因此, 我们完全可以使用它而省略了在每个方法中都手动调用一次set_up的麻烦.

class MapManagerTest(TestCase):
    def setUp(self):  # setUp会被自动执行
        self.mm = MapManager()
        print 'all nodes:', self.mm._graph.nodes

    def test_is_surrounded(self):
        self.mm._graph.nodes['f_52']['on_node'] = [Entity(101, 2)]
        self.mm._graph.nodes['f_50']['on_node'] = [Entity(102, 2)]
        self.assertEquals(bool(self.mm.get_available_nodes(cur_pos='s_46', n=1, kind='s', penetrate=True, blockable=True)), False)
        self.assertEquals(bool(self.mm.get_move_nodes(1, 's_46', 1)), False)

    def test_get_route(self):
        self.mm._graph.nodes['f_52']['on_node'] = [Entity(101, 2)]
        print self.mm.get_move_nodes(1, 's_46', 3)
        self.assertEquals(self.mm.get_route('s_6'), ('s_46', 'f_50', 's_38', 'f_42', 'f_35', 'f_29', 's_10', 'f_13', 's_6'))

以上就是最基本的用法, 非常简单, 而且一般来说足够覆盖平时的使用.

参考资料

基本上只要读官方文档就已经足够解惑了!
https://docs.python.org/2/library/unittest.html

你可能感兴趣的:(Python unittest的基本用法)