gpt4 book ai didi

python - 在单元测试中模拟对象时避免输入类型警告?

转载 作者:行者123 更新时间:2023-12-03 09:37:56 24 4
gpt4 key购买 nike

假设我有一个接受复杂对象并对其执行某些操作的函数:

def foo(bar: SomeComplexObject):
...

在单元测试中, bar将替换为 mock object,但类(class)现在会发出类型警告。我是否应该简单地忽略或抑制它们,或者是否有适当的方法来处理它们(当然,无需更改原始函数签名)?

更新:我现在看到这是mypy上的 open issue,但是它处于这种状态已经有两年多了。关于如何解决此问题,是否已达成共识?

最佳答案

我要投入2美分,并说您应该对您的测试套件进行类型检查。它的静态代码和静态类型检查将帮助您更快地编写更好的代码。

这留下了如何做的问题。理想情况下,如果您的函数需要SomeComplexObject,则您还应传入其实例。通过在您的测试装置中构建一个,或通过子类化并覆盖不需要的内容,要么。最好的单元测试是在正确输入下进行的测试。

仍然留下这种情况是不切实际的,或者我们明确想要测试如何处理无效输入。在这种情况下,只需将您的模拟明确转换为mypy所需的类型:

from typing import cast

def test_foo():
mock_bar = cast(SomeComplexObject, MockBar())
foo(mock_bar)

关于python - 在单元测试中模拟对象时避免输入类型警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50362923/

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