2014-09-02 108 views
1

我创建的设置,其中我像这样创建文件测试:在测试结束如何在python中完成测试后删除测试文件?

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 
     ... 

,无论成功或不,我要的测试文件了,所以 如何删除文件后,我已完成测试?

回答

5

假设你正在使用单元测试 -esque框架(即鼻子等),你会想用tearDown方法来删除该文件,因为这将每次测试之后运行。

def tearDown(self): 
    os.remove('some_file_to_test') 

如果你想所有的测试后,仅删除此文件,你可以在方法setUpClass创建它,并在方法tearDownClass,这将之前后运行,并且毕竟测试已运行删除。

+2

我想你的意思是在'setupClass()'中创建文件,并在'tearDownClass()'中删除它。还有一个类似的'setupModule()'和'tearDownModule()'。 – mhawke 2014-09-02 03:54:00

+0

@mhawke谢谢你指向正确的方向,tearDownClass()就是我正在寻找的 – 2014-09-02 04:00:00

+0

@mhawke:是的,谢谢。错别字... =) – khampson 2014-09-02 04:21:35

3

另一种选择是增加一个功能被拆除后()使用的TestCase addCleanup()方法叫:

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()更方便使用随机名称创建,因为您可以在文件创建后添加清理方法。