1
我有以下方法:模擬方法屬性蟒蛇拋出AttributionError
def get_countries(cities):
prefix = os.getenv("PREFIX")
...
...
我想嘲笑這個前綴屬性(因爲我沒有找到一個方法來嘲笑在os.getenv("PREFIX")
和@mock.patch.dict(os.environ, {"PREFIX": "P"})
只需一個鍵 - 會嘲笑整個字典,而且有可能是我想保留其他鍵
所以我寫了以下內容:
@mock.patch.object("get_countries", "prefix", "P")
def test_get_aggregated_performance_records_countries_min_spend():
...
我得到一個n錯誤:
AttributeError: get_countries does not have the attribute 'prefix'
我在做什麼錯?
我更喜歡使用模擬,而不是修改我的測試代碼。有沒有辦法模擬函數作用域變量? 關於os env的問題 - 這意味着我們需要維護這個補丁,如果我們計劃在未來使用更多的sys env,在其他情況下,它們的值不會影響測試。 – Dejell