我怎樣才能使python的unittest模塊顯示每個斷言的輸出,而不是在每個測試用例的第一個失敗?如果我能看到完整的故障模式,而不僅僅是第一種故障,那麼調試將變得更容易。使每個斷言的pyunit顯示輸出
在我的情況下,斷言是基於一個包含一個對象加上一些函數名和期望的輸出的數組的循環,所以沒有一個明顯的方法(至少對我來說)只是每一個斷言分離到一個單獨的測試用例:
import unittest
import get_nodes
class mytest2(unittest.TestCase):
def testfoo(self):
root = get_nodes.mmnode_plus.factory('mytree.xml')
tests = [
(root, {'skip_traversal': False, 'skip_as_child': True, 'skip_as_parent': False, 'is_leaf': False}),
(root[0], {'skip_traversal': False, 'skip_as_child': False, 'skip_as_parent': False, 'is_leaf': False}),
(root[1], {'skip_traversal': True, 'skip_as_child': True, 'skip_as_parent': True}),
(root[1][0], {'skip_traversal': True}),
(root[0][0], {'is_leaf': False, 'skip_traversal': False, 'skip_as_child': False, 'skip_as_parent': False}),
(root[0][0][0], {'is_leaf': True, 'skip_traversal': False, 'skip_as_child': False, 'skip_as_parent': True}),
(root[0][4], {'skip_traversal': True, 'skip_as_child': True, 'skip_as_parent': True}),
(root[0][7], {'skip_traversal': False, 'skip_as_child': False, 'skip_as_parent': True}),
]
for (node, states) in tests:
for test_state, exp_result in states.iteritems():
self.assertEqual(node.__getattribute__(test_state)(), exp_result, "unexpected %s for state %s of node %s %s" % (not exp_result, test_state, repr(node), repr(node.__dict__)))
unittest.main()
obj.__getattribute__('hello')
回報obj.hello
所以node.__getattribute__(test_state)()
我打電話節點的成員函數名稱存儲在test_state變量的方式。
不能像這樣被動態地從同一陣列產生的? – 2009-02-17 19:54:36