如何模拟 Python 列表中的局部变量?

How to mock if a local variable in a list in Python?

我正在尝试模拟列表中的 if 食物,有人可以告诉我该怎么做吗?谢谢!

def method_a():
    food = "apple"
    if food in ["apple", "banana"]
        do something...

问题中的代码自第一次迭代以来已被修改。 它现在的样子 - 你 不能 模拟 food 因为它是函数的局部变量(正如@chepner 在评论中建议的那样!)。

您可以做的一件事是将 food 从调用者传递到函数中:

def method_a(food):
    if food in ["apple", "banana"]
        # do something...

通过这样做 - 您的测试可以轻松地“注入”您想要测试的值。

一般来说,建议使用 dependency injection (DI) 方法,有时也称为 IoC(控制反转),以使您的代码更清晰且可测试。