我创建了一个测试,在setUp中我创建了这样的文件:
class TestSomething :
def setUp(self):
# create file
fo = open('some_file_to_test','w')
fo.write('write_something')
fo.close()
def test_something(self):
# call some function to manipulate file
...
# do some assert
...
def test_another_test(self):
# another testing with the same setUp file
...
在测试结束时,无论成功与否,我都希望测试文件不见了 完成测试后如何删除文件?
答案 0 :(得分:6)
其他选项是使用TestCase的addCleanup()
方法添加要在tearDown()之后调用的函数:
class TestSomething(TestCase):
def setUp(self):
# create file
fo = open('some_file_to_test','w')
fo.write('write_something')
fo.close()
# register remove function
self.addCleanup(os.remove, 'some_file_to_test')
在有大量文件或使用随机名称创建文件时,它比tearDown()
更方便,因为您可以在创建文件后添加清理方法。
答案 1 :(得分:5)
假设您正在使用 unittest -esque框架(即 nose 等),您可能希望使用tearDown
方法删除文件,因为它将在每次测试后运行。
def tearDown(self):
os.remove('some_file_to_test')
如果您只想在所有测试后删除此文件,可以在方法setUpClass
中创建它并在方法tearDownClass
中删除它,该方法将在之前和之后运行测试分别运行。
答案 2 :(得分:4)
写一个tearDown方法:
https://docs.python.org/3/library/unittest.html#unittest.TestCase.tearDown
def tearDown(self):
import os
os.remove('some_file_to_test')
另请查看tempfile模块,看看它在这种情况下是否有用。
答案 3 :(得分:1)
如果您使用的是pytest
或其他无类测试框架,请改用自删除临时文件:
import tempfile
with tempfile.NamedTemporaryFile() as f:
f.write('write_something')
# assert stuff here
# Here the file is closed and thus deleted