0

我正在使用鼻子测试框架。运行测试模块时,其中定义的拆卸功能失败。引发的错误表示夹具被另一个进程锁定。这是我的测试模块test_my_module.py

... ...    
def teardown():
    if os.path.exists(test_output_dir):
        shutil.rmtree(test_output_dir)
... ...

@with_setup(init_test_db, destroy_test_db)
def test_foo1():
    eq_(foo1(),1)

@with_setup(init_test_db, destroy_test_db)
def test_foo2():
    eq_(foo2(),2)
... ...

test_output_dir中有一个 db(sqlite3) 文件,用作夹具。实际上,由于它被其他进程锁定,因此无法通过拆卸删除该 db 文件。据我了解,在所有测试功能完成运行后,将始终运行拆解。那么为什么会这样呢?为什么那些测试功能仍然可以锁定 db 文件?是 sqlite3 问题还是我的测试代码有问题?

4

2 回答 2

0

您可以尝试在删除之前显式关闭拆解中的 sqlite 连接test_output_dir

于 2010-10-12T14:58:10.230 回答
0

我相信我在 c# 单元测试中确实遇到了同样的问题。

我通过在删除数据库文件之前调用 SqliteConnection.ClearAllPools() 解决了它,因此它与连接池有关。

也许python中有一个等效的方法?我真的不知道。

于 2010-10-21T19:26:00.387 回答