为了测试这个引用,我们添加了第二个模块(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