2017-02-14 53 views
1

当我尝试使用setUpClass方法,给出了_cleanups属性的错误没有出现在下面的代码Python的单元测试嘲讽的主要功能

@classmethod 
    def setUpClass(self): 
     self.argv = ['installation_tool.py'] 
     argv_patcher = patch.object(sys, 'argv', self.argv) 
     self.addCleanup(self, argv_patcher.stop) 
     self.argv_mock = argv_patcher.start() 
     self.all_bears = get_all_bears_names_from_PyPI() 

但是,当我使用安装程序的方法,它工作得很好,我可以在其他方法中添加像self.argv + = [asd,asda,asd]这样的参数。

def setUp(self): 
     self.argv = ['installation_tool.py'] 
     argv_patcher = patch.object(sys, 'argv', self.argv) 
     self.addCleanup(argv_patcher.stop) 
     self.argv_mock = argv_patcher.start() 
     self.all_bears = get_all_bears_names_from_PyPI() 

我想在这里测试主要功能,所以我需要嘲笑完成。我还能如何测试主要功能?

我该如何使用setUpClass来做到这一点,因为我需要为其他方法使用setUp方法,因为他们有自己的启动调用?

回答

0

您正在将'self'传递给setUpClass(这是一个类方法)而不是'cls'。你不能在类方法中使用self。如果你需要使用setUp(实例方法),也许你可以在不同的测试用例中分开你的测试(因为每个测试用例都可以有它自己的setUp方法)并且用你写的setUp运行测试,这是正确的。同样适用于setUpClass。所以当你需要定义不同的setUp方法时,你可能想要分割测试用例。