【问题标题】:Mock value of Enum with python用python模拟枚举值
【发布时间】:2022-07-07 16:07:42
【问题描述】:

我想更改 HANDLES_CSV 的值

class FileName(str, Enum):
    HANDLES_CSV = "handles.csv"
    HANDLES_JSON = "handles.json"

def test_function():
    FileName.HANDLES_CSV.value = mock.Mock() 
    FileName.HANDLES_CSV.value.return_value = "test.json"
    print(FileName.HANDLES_CSV)

我有这个错误: AttributeError: 无法设置属性

你能帮忙吗?

【问题讨论】:

    标签: python testing mocking


    【解决方案1】:

    这与模拟无关,枚举应该作为常量而不是变量,所以你不应该重新分配它们的值。

    不使用 Enum 类将允许您在定义之后放置一个模拟对象。

    class FileName(str):
        HANDLES_CSV = "handles.csv"
        HANDLES_JSON = "handles.json"
    
    FileName.HANDLES_CSV = mock.Mock()
    FileName.HANDLES_JSON = "test.json"
    

    无论如何,大写名称通常保留给常量值,所以这似乎还是有点奇怪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      相关资源
      最近更新 更多