我是新来制作的单元测试。我目前正在运行pytest。我有这个Program.py运行,但是当我在我的Program_test.py我一直在失败的试验,由于从我在那里我有下面的代码我断言行这些TypeErrors运行pytest。我有程序要求用户提供的输入值或进入退出程序。我有“进口pytest”已经包含在我的Program_test.py程序。
我使用的λ错了吗?我不知道如何以最佳方式处理这一和得到这些用户的输入工作。这是刚刚从用户测试get_weight功能。
***已经是固定的。我曾与拉姆达问题,下面是非常有益的
这里有一个例子,说明你要去哪里错和解释的目的,我分配lambda表达式变量:
zero_arg_lambda = lambda: "131" # Takes no args
one_arg_lambda = lambda x: "131" # Takes one arg
呼叫zero_arg_lambda与ARG(同您的错误):
zero_arg_lambda(1)
>>> Traceback (most recent call last):
>>> File "<input>", line 1, in <module>
>>> TypeError: <lambda>() takes no arguments (1 given)
呼叫one_arg_lambda:
one_arg_lambda(1)
>>> "131"
因此,在短期你的代码将参数传递到拉姆达即使您已经指定,它并不需要一个。
所述one_arg_lambda示例采用的参数,并且简单地将值返回到结肠的右侧。我建议在阅读上lambda的文档
或者,如果你不看有预期的λ格式为:
拉姆达参数:表达
另外请注意,其具有使用lambda表达式的一个很好的例子上的monkeypatch.context.setattr文档。
为了针点在你的代码中的错误是从你的测试里面context.setattr电话来了。
def test_get_weight_returns_valid_input(monkeypatch):
with monkeypatch.context() as context:
# Old line causing error: context.setattr('builtins.input', lambda: "131")
context.setattr('builtins.input', lambda x: "131") # Fixed