最基本例子
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