2
處理單元測試的最佳方法是依靠調用代碼,而代碼又依賴於當前應用程序的配置?在單元測試期間燒瓶app.config
例如
code.py
from flask import current_app
def some_method():
app = current_app._get_current_object()
value = (app.config['APP_STATIC_VAR'])*10
return value
test_code.py
class TestCode(unittest.TestCase):
def test_some_method(self):
app = create_app('app.settings.TestConfig')
value = some_method()
self.assertEqual(10, value)
運行測試上述我得到一個 'RuntimeError:工作應用程序上下文的外部' 錯誤時,應用程序= create_app('app.settings.TestConfig')行被執行。
在測試過程中調用app = create_app並不能解決問題。在這種情況下,我需要在應用程序中讀取配置的單元測試的最佳方式是什麼?
其實你沒有做單元測試在這裏,但集成測試。因此,無論您需要重構代碼(例如傳遞配置)以允許單元測試或應用方法進行集成測試。這是標準答案。 [但我傾向於拉伸'unitest'也](http://stackoverflow.com/questions/36068957/mocking-where-its-defined-in-python-mock),我渴望知道是否有人下降與很酷的想法。也許'mock.patch'ing'flask.current_app'左右... – flaschbier
我會問的問題是你到底想用不同的配置值測試什麼?你的應用應該如何運作?另外,使用不同的應用程序配置,您是否可以使用Flask的[測試客戶端](http://flask.pocoo.org/docs/0.10/testing/#the-testing-skeleton)? – idjaw