我正在编写一些Brightway2扩展,并在pytest中编写了相应的测试。我在测试的拆卸部分遇到了麻烦。
与其他Brightway2测试一样,我在创建装置时使用@ bw2tests装饰器,请参见here。这允许在临时目录中创建项目,并且通常可以正确配置Brightway2以进行测试。
我的灯具看起来像这样:
@pytest.fixture
@bw2test
def basic():
"""Pytest fixture with test bw2 project with test data to use in test"""
# Write test data...
# For example, for the biosphere Database:
biosphere = Database("biosphere")
biosphere.register()
biosphere.write({
("biosphere", "1"): {
'categories': ['things'],
'exchanges': [],
'name': 'an emission',
'type': 'emission',
'unit': 'kg'
})
# Once I have created all the data I need,
# I yield the data I need for my test functions...
yield {'project': projects.current, 'method_name': method_name}
# Once my tests are done, I would like to tear down the project
projects.delete_project(projects.current, delete_dir=True)
这一切一直进行到拆解:由于项目是temp目录中的唯一项目,因此我得到ValueError: Can't delete only remaining project
。
但是,如果我不拆卸,每次运行测试时都会创建的新测试目录保留在磁盘上。它们并不大(100kB),但我仍然认为它们不应该存在。
有什么建议吗?
答案 0 :(得分:1)
代替使用projects
函数,只需使用shutil.rmtree
完全核对目录即可。现在,该操作是在bw2data
与3.5.1(版本5.9.2019)中自动完成的。