gpt4 book ai didi

python - 模拟方法属性 python 抛出 AttributionError

转载 作者:太空宇宙 更新时间:2023-11-03 14:52:14 25 4
gpt4 key购买 nike

我有以下方法:

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():
...

我收到错误:

AttributeError: get_countries does not have the attribute 'prefix'

我做错了什么?

最佳答案

prefix 不是 get_countries 函数的属性。它是一个函数作用域变量,包含在 get_countries 中,但它不是 get_countries 的属性:)

如果修补 os.environ 是 Not Acceptable ,您可以重构以将 prefix 公开为参数:

def get_countries(cities, prefix=os.getenv("PREFIX")):
...
...

使为单元测试提供值变得微不足道。

<小时/>

此外,如果您修补ed os.environ,它应该只影响当前的测试用例。一次测试需要指定多少个键?

关于python - 模拟方法属性 python 抛出 AttributionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com