【问题标题】:Python Unittest mocking main functionPython Unittest 模拟主函数
【发布时间】:2017-02-14 04:33:25
【问题描述】:

当我尝试使用 setUpClass 方法时,会出现以下代码中不存在 _cleanups 属性的错误

@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()

但是,当我使用 setUp 方法时,它工作得很好,我可以在其他方法中添加 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()

我正在尝试在这里测试 Main 函数,所以我需要进行模拟。我还能如何测试 main 函数?

我如何使用 setUpClass 来执行此操作,因为我需要将 setUp 方法用于其他方法,因为它们有自己的启动调用?

【问题讨论】:

    标签: python python-3.x unit-testing mocking python-unittest


    【解决方案1】:

    您将“self”传递给 setUpClass(这是一个类方法)而不是“cls”。您不能在类方法中使用 self 。如果您需要在其他地方使用 setUp(instance method) ,也许您可​​以将测试分开在不同的测试用例中(因为每个测试用例都可以有自己的 setUp 方法)并使用您编写的 setUp 运行测试,这是正确的。同样适用于 setUpClass。因此,当您需要定义不同的 setUp 方法时,您可能需要考虑拆分测试用例。

    【讨论】:

      猜你喜欢
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      相关资源
      最近更新 更多