Python 如何删除py.test中的持久对象?

Python 如何删除py.test中的持久对象?,python,testing,pytest,Python,Testing,Pytest,以下是我使用py.test运行的测试: def test_config1(): _config_file1 = "some_file_1.cfg" sim1 = Simulator(_config_file1) sim1.run() assert sim1.a == 4 def test_config2(): _config_file2 = "some_file_2.cfg" sim2 = Simulator(_config_file2)

以下是我使用py.test运行的测试:

def test_config1():
    _config_file1 = "some_file_1.cfg"
    sim1 = Simulator(_config_file1)
    sim1.run()
    assert sim1.a == 4

def test_config2():
    _config_file2 = "some_file_2.cfg"
    sim2 = Simulator(_config_file2)
    sim2.run()
    assert sim2.a == 14
sim1创建一些对象,即使sim1超出范围并且sim2的模拟已经开始,这些对象仍会保留在内存中。如何确保在sim2启动之前删除这些对象。我尝试将测试放在不同的文件中,但我假设py.test在同一个进程中运行它们,因为sim1创建的那些对象会持久化,并导致sim2提供错误的结果。如果测试顺序颠倒,sim2可以正常运行,但sim1不能


一种方法是编写sim1的析构函数,删除它创建的所有对象。是否有其他方法可以删除py.test中的持久对象

创建一个setUp或tearDown方法,在每次测试开始之前调用该方法并删除持久对象。

这似乎是删除该对象的一个好方法。一个重要的问题是sim1中还有其他模块创建sim1无法直接访问的对象。我总是可以转到这些单独的模块并删除这些对象。有没有一种直接的方法可以删除运行sim1时创建的所有对象?根据您的信息很难判断,恐怕没有直接的方法可以删除所有对象,但是对于单元测试来说,在所有单元测试之间具有相同的“状态”是很重要的。。。因此,如果sim1无法删除其创建的对象,则需要尽可能调用其他类中的功能。是。在类中添加一个公共函数比在所有单元测试中都这样做要好。谢谢