尝试使用带有泛型参数的mockito python存根函数时出错

2024-09-27 07:29:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在查看,在Python中看不到与我有相同问题的人。在

在这里我可能很傻,但我正在尝试去掉一个需要几个参数的方法。在我的测试中,我只想返回一个与参数无关的值(即,对于每个调用,只返回相同的值)。因此,我一直试图使用“通用”论点,但我显然做错了什么。在

有人能发现我的问题吗?在

from mockito import mock, when

class MyClass():

    def myfunction(self, list1, list2, str1, str2):
        #some logic
        return []


def testedFunction(myClass):
    # Logic I actually want to test but in this example who cares...
     return myClass.myfunction(["foo", "bar"], [1,2,3], "string1", "string2")

mockReturn = [ "a", "b", "c" ]

myMock = mock(MyClass)
when(myMock).myfunction(any(list), any(list), any(str), any(str)).thenReturn(mockReturn)

results = testedFunction(myMock)

# Assert the test

我已经成功地在上面的基本代码中复制了我的问题。在这里我只想逃出去我的class.myfunction对于任何一组参数。如果我不提这些论点-例如:

^{pr2}$

然后什么都不返回(所以存根不起作用)。但是,对于“泛型参数”,出现以下错误:

     when(myMock).myfunction(any(list), any(list), any(str), any(str)).thenReturn(mockReturn)
TypeError: 'type' object is not iterable

我知道我一定在做一些愚蠢的事情,就像我以前在Java中经常做的那样,但是我想不出我做错了什么。在

有什么想法吗?在


Tags: 参数returndefmyclassanymocklistclass
1条回答
网友
1楼 · 发布于 2024-09-27 07:29:43

本例中的any是{a1},它需要某种类型的iterable,如果iterable中的任何元素都是真的,则返回{}。您需要显式导入matchers.any

from mockito.matchers import any as ANY

when(myMock).myfunction(ANY(list), ANY(list), ANY(str), ANY(str)).thenReturn(mockReturn)

相关问题 更多 >

    热门问题