Python中的测试用例冲突

Python中的测试用例冲突,python,unit-testing,mocking,Python,Unit Testing,Mocking,我对Python测试相当陌生,遇到了一些我不理解的奇怪行为 我已经模拟了类MockedClass,我在两个测试类中使用它,就像这样(两个类都在同一个文件中): 头等舱: class TestClass1(unittest.TestCase): def setUp(self): self.mocked_object_1 = MockedClass() 二等舱: class TestClass2(unittest.TestCase): def setUp(sel

我对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
中的所有测试用例都失败

我通过声明global
temp\u mock\u 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),但我认为这并不重要

因此,我非常希望能对这里发生的事情做出某种解释,因为我在别处找不到答案