Flask 测试的大框架

为了测试这个引用,我们添加了第二个模块(flaskr_tests.py),
并且创建了一个框架如下:

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() 方法的代码创建了一个新的测试
客户端并且初始化了一个新的数据库。这个函数将会在每次独立的测试函数
运行之前运行。要在测试之后删除这个数据库,我们在 tearDown()
函数当中关闭这个文件,并将它从文件系统中删除。同时,在初始化的时候
TESTING 配置标志被激活,这将会使得处理请求时的错误捕捉失效,以便于
您在进行对应用发出请求的测试时获得更好的错误反馈。

这个测试客户端将会给我们一个通向应用的简单接口,我们可以激发
对向应用发送请求的测试,并且此客户端也会帮我们记录 Cookie 的
动态。

因为 SQLite3 是基于文件系统的,我们可以很容易的使用临时文件模块来
创建一个临时的数据库并初始化它,函数 mkstemp()
实际上完成了两件事情:它返回了一个底层的文件指针以及一个随机
的文件名,后者我们用作数据库的名字。我们只需要将 db_fd 变量
保存起来,就可以使用 os.close 方法来关闭这个文件。

如果我们运行这套测试,我们应该会得到如下的输出:

$ python flaskr_tests.py

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

OK

虽然现在还未进行任何实际的测试,我们已经可以知道我们的 flaskr
程序没有语法错误了。否则,在 import 的时候就会抛出一个致死的
错误了。

作者:terry,如若转载,请注明出处:https://www.web176.com/flask2/21739.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2023年5月18日 下午4:13
下一篇 2023年5月18日 下午4:13

相关推荐

发表回复

登录后才能评论