2014-09-02 117 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()更方便使用隨機名稱創建,因爲您可以在文件創建後添加清理方法。