python单元测试os.remove失败文件系统

时间:2010-06-14 10:30:05

标签: python unit-testing

我正在对试图打开新文件的函数进行一些单元测试,但如果该文件已存在则应该失败。当函数成功运行时,会创建新文件,所以我希望在每次测试运行后删除它,但它似乎不起作用:

class MyObject_Initialisation(unittest.TestCase):
    def setUp(self):
        if os.path.exists(TEMPORARY_FILE_NAME):
            try:
                os.remove(TEMPORARY_FILE_NAME)
            except WindowsError:
                #TODO: can't figure out how to fix this...
                #time.sleep(3)
                #self.setUp() #this just loops forever
                pass

    def tearDown(self):
        self.setUp()

任何想法?抛出的Windows错误似乎表明文件正在使用中......可能是测试是在并行线程中运行的吗?

我在其他地方读过,在单元测试中使用文件系统是“不好的做法”,但真的?当然有一种方法可以解决文件系统的问题吗?

2 个答案:

答案 0 :(得分:2)

您是否记得明确关闭在TEMPORARY_FILE_NAME上运行的文件处理程序?

来自Python Documentation

  

在Windows上,尝试删除   正在使用的文件导致   提出的例外情况;

答案 1 :(得分:1)

如果您只是在寻找一个临时文件,请查看tempfile - 这应该自行处理清理工作。