1
我試圖模擬setUpClass()
方法中的函數,然後在tearDownClass()
方法中恢復函數。Python中的類方法單元測試用例
class MyClass(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.save_func = module.func
module.func = lambda: True
@classmethod
def tearDownClass(cls):
module.func = cls.save_func
的tearDownClass()
方法後,我預計module.func()
的調用將調用實際的功能。但事實並非如此。
我通過打印功能做了一些調試。我從tearDownClass()
方法得到了以下輸出。
cls.save_func: <unbound method MyClass.save_func>
module.func: <unbound method MyClass.save_func>
我嘗試不同的事情,我改變了從類方法中的方法,設置方法:
def setUp(cls):
cls.save_func = module.func
module.func = lambda: True
def tearDown(cls):
module.func = cls.save_func
令我驚訝的是,一切都似乎是工作。 module.func
被恢復,當我打印它時,它給了我函數地址。
module.func <function func at 0x89f9a74>
你能解釋一下這個行爲嗎?
韋斯利,請你詳細說明一下。 –
請參閱http://stackoverflow.com/questions/1682504/how-to-write-a-stub-for-a-classmethod-in-python –