1
我創建了一個裝飾,使函數只在特定的環境中運行:如何對使用環境變量的裝飾器進行單元測試?
def accepted_environments(*envs):
"""
The decorated function can be executed only in specified envs
"""
def my_decorator(func_to_be_decorated):
def wrapper():
if settings.ENV_NAME not in envs:
raise EnvironmentException
return func_to_be_decorated()
return wrapper
return my_decorator
# Usage example
@accepted_environments('local', 'prod')
def hello():
print("hello")
,似乎工作,但我想單元測試。 問題是:我的測試可能在每個環境中運行(本地,分期,產品)。另外,我認爲這是不安全的,我的測試能夠改變環境變量。
我應該「模擬」這種行爲?你會怎麼做?謝謝!
感謝您的想法。 mock.patch.objet不存在(我正在使用Python 3.5)。我試着用'用mock.patch(設置,ENV_NAME =「ENV1」)'但我得到一個'AttributeError的:「設置」對象有沒有屬性「rsplit'' –
你導入第三方'mock'模塊? https://docs.python.org/3/library/unittest.mock.html#patch-object – chepner
不,它只是Pycharm..weird。否則,我得到一個'類型錯誤:_patch_object()失蹤1個人需要的位置參數:「attribute''我試圖找出在doc什麼模擬需求:) –