断言使用特定类型的参数调用

时间:2019-05-28 09:27:18

标签: python mocking

我想检查一下测试是否用特定类的参数调用了函数。

class Foo:
... 

我找到了ock.ANY,但是在那里我无法通过任何课程。想要的是:

test_mock.assert_called_with("expected string", ANY(spec=Foo))

3 个答案:

答案 0 :(得分:0)

您可以使用班级名称来检查班级名称:

private void Page1_Loaded(object sender, RoutedEventArgs e)
{
    string uri = this.NavigationService.CurrentSource.ToString();
    string querystring = uri.ToString().Substring(uri.IndexOf('?'));
    System.Collections.Specialized.NameValueCollection parameters = System.Web.HttpUtility.ParseQueryString(querystring);

    string val = parameters["IP"];
    if (!string.IsNullOrEmpty(val))
    {
        MessageBox.Show(val, "Information", MessageBoxButton.OK);
    }
}

答案 1 :(得分:0)

我用自定义匹配器解决了它。

class TypeMatcher:

def __init__(self, expected_type):
    self.expected_type = expected_type

def __eq__(self, other):
    return isinstance(other, self.expected_type)

然后像这样测试它:

test_mock.assert_called_with("expected string", TypeMatcher(Foo))

答案 2 :(得分:0)

使用其他测试。 call_args属性包含传递给调用的参数;您可以提取所需的参数,然后检查其类型。

# E.g. test_mock(1,"foo", bar=9) gives 
# test_mock.call_args == ((1, "foo"), {"bar": 9})
assert isinstance(test_mock.call_args[1][1], Foo)