Python中的测试用例冲突

时间:2017-05-03 14:42:57

标签: python unit-testing mocking

我在Python中测试相当新,我遇到了一些我无法理解的奇怪行为。

我已经模拟了类MockedClass,我在两个这样的测试类中使用它(两个类都在同一个文件中):

头等舱:

class TestClass1(unittest.TestCase):

    def setUp(self):
        self.mocked_object_1 = MockedClass()

第二课:

class TestClass2(unittest.TestCase):

    def setUp(self):
        self.mocked_object_2 = MockedClass()

模拟对象作为参数传递给测试函数。现在发生的是,当这两个测试分别运行时(在不同的文件中),这些类中的所有测试都是成功的,但是当它们都在同一个文件中运行时,TestClass2中的所有测试用例都会失败。

我设法通过声明全局temp_mocked_object来解决这个问题(

class TestClass1(unittest.TestCase):

    def setUp(self):
        temp_mocked_object = self.mocked_object_1
        self.mocked_object_1 = MockedClass()

    def tearDown(self):
        self.mocked_object_1 = temp_mocked_object

但我不明白为什么会出现这个问题,更不用说为什么这个解决方案有效了。最让我困惑的是,尽管存在不同的模拟对象名称,但第二次测试失败了。

模拟类的结构是这样的:

class MockedClass(someScript.OriginalClass):
    def __init__(self):
        # some unimportant objects are initialized here

我正在使用较旧的Python版本(2.7),但我认为这无关紧要。

所以我非常感谢对这里发生的事情做出某种解释,因为我在其他地方找不到答案。

0 个答案:

没有答案
相关问题