Flask 測試的大框架

2021-08-10 17:35 更新

為了測試這個引用,我們添加了第二個模塊(flaskr_tests.py), 并且創(chuàng)建了一個框架如下:

import os
import flaskr
import unittest
import tempfile

class FlaskrTestCase(unittest.TestCase):

    def setUp(self):
        self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp()
        flaskr.app.config['TESTING'] = True
        self.app = flaskr.app.test_client()
        flaskr.init_db()

    def tearDown(self):
        os.close(self.db_fd)
        os.unlink(flaskr.app.config['DATABASE'])

if __name__ == '__main__':
    unittest.main()

在 setUp() 方法的代碼創(chuàng)建了一個新的測試 客戶端并且初始化了一個新的數(shù)據(jù)庫。這個函數(shù)將會在每次獨立的測試函數(shù) 運行之前運行。要在測試之后刪除這個數(shù)據(jù)庫,我們在 tearDown() 函數(shù)當(dāng)中關(guān)閉這個文件,并將它從文件系統(tǒng)中刪除。同時,在初始化的時候 TESTING 配置標(biāo)志被激活,這將會使得處理請求時的錯誤捕捉失效,以便于 您在進(jìn)行對應(yīng)用發(fā)出請求的測試時獲得更好的錯誤反饋。

這個測試客戶端將會給我們一個通向應(yīng)用的簡單接口,我們可以激發(fā) 對向應(yīng)用發(fā)送請求的測試,并且此客戶端也會幫我們記錄 Cookie 的 動態(tài)。

因為 SQLite3 是基于文件系統(tǒng)的,我們可以很容易的使用臨時文件模塊來 創(chuàng)建一個臨時的數(shù)據(jù)庫并初始化它,函數(shù) mkstemp() 實際上完成了兩件事情:它返回了一個底層的文件指針以及一個隨機(jī) 的文件名,后者我們用作數(shù)據(jù)庫的名字。我們只需要將 db_fd 變量 保存起來,就可以使用 os.close 方法來關(guān)閉這個文件。

如果我們運行這套測試,我們應(yīng)該會得到如下的輸出:

$ python flaskr_tests.py

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

雖然現(xiàn)在還未進(jìn)行任何實際的測試,我們已經(jīng)可以知道我們的 flaskr 程序沒有語法錯誤了。否則,在 import 的時候就會拋出一個致死的 錯誤了。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號