Flask 測(cè)試的大框架

2021-08-10 17:35 更新

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

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)建了一個(gè)新的測(cè)試 客戶端并且初始化了一個(gè)新的數(shù)據(jù)庫(kù)。這個(gè)函數(shù)將會(huì)在每次獨(dú)立的測(cè)試函數(shù) 運(yùn)行之前運(yùn)行。要在測(cè)試之后刪除這個(gè)數(shù)據(jù)庫(kù),我們?cè)?tearDown() 函數(shù)當(dāng)中關(guān)閉這個(gè)文件,并將它從文件系統(tǒng)中刪除。同時(shí),在初始化的時(shí)候 TESTING 配置標(biāo)志被激活,這將會(huì)使得處理請(qǐng)求時(shí)的錯(cuò)誤捕捉失效,以便于 您在進(jìn)行對(duì)應(yīng)用發(fā)出請(qǐng)求的測(cè)試時(shí)獲得更好的錯(cuò)誤反饋。

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

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

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

$ python flaskr_tests.py

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

OK

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)