Cha*_*ite 5 python unit-testing flask
我有一个 Flask 应用程序,它定义了 before_first_request 方法。该方法为应用程序加载一些缓存数据。我正在尝试运行一些单元测试,但缓存的数据妨碍了我。我如何模拟该方法。
@app.before_first_request
def load_caches():
print "loading caches..."
# cache loading here.
Run Code Online (Sandbox Code Playgroud)
在我的测试文件中,我定义了一个全局 test_client 如下:
from unittest import TestCase
from .. import application
import mock
test_app = application.app.test_client()
Run Code Online (Sandbox Code Playgroud)
我的测试课就是这样。问题是我的 test_app 加载了缓存,我需要在测试中模拟它。
您可以手动删除测试客户端中的挂钩:
test_app = application.app.test_client()
test_app.before_first_request_funcs = []
Run Code Online (Sandbox Code Playgroud)
我很惊讶没有人为此提供解决方案。我认为它至少对其他人可能有用。这可能是一种解决方法,尽管我发现这是最简单的。就我而言,我正在测试一个独立的函数,而不是一个方法。
你的问题我也很头疼。我发现安装 python未修饰的库并将其导入到执行单元测试的文件中就可以了。然后,在执行此操作之后,在undecorated
SetUp 方法内部调用方法调用(在运行之前test_client()
),如下所示:
在 test_my_module.py 中
from my_app import app, my_module
from undecorated import undecorated
class MyTestClass(unittest.TestCase):
def setUp(self):
undecorated(my_module.my_function)
# we are doing this before anything else due to the decorator's nature
# my_function has the @before_first_request decorator.
# Other setUp code below
self.client = app.test_client()
# ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2142 次 |
最近记录: |