我正在为我的 python 2.7 方法之一编写一个单元测试用例。
在我的测试方法中,有一个方法调用将带有字符串键和 panadas 数据框的字典作为该键的值。
我想为此方法编写一个交互测试,以检查它是否使用正确的字典在内部调用该方法
def MethodUnderTest(self):
#some code here
externalMethod(dictionary_of_string_dataframe)
#some code here
在单元测试中,我确实写了我的断言来测试这样的交互
mock_externalClass.externalMethod.assert_called_once_with(dictionary_of_string_dataframe)
我创建 dictionary_of_string_dataframe 的方式与在实际方法中创建的方式完全相同。事实上,我复制了在测试代码中执行此操作的辅助方法,只是为了确保两个字典相同。我什至在 python 控制台上调试测试方法时打印了这两个字典,它们看起来完全一样。
我使用@patch 装饰器修补外部类,一切正常。
问题是在上面提到的断言语句中,我收到以下错误:
mock_externalClass.externalMethod.assert_called_once_with(dictionary_of_string_dataframe)
File "C:\Python27\lib\site-packages\mock\mock.py", line 948, in assert_called_once_with
return self.assert_called_with(*args, **kwargs)
File "C:\Python27\lib\site-packages\mock\mock.py", line 935, in assert_called_with
if expected != actual:
File "C:\Python27\lib\site-packages\mock\mock.py", line 2200, in __ne__
return not self.__eq__(other)
File "C:\Python27\lib\site-packages\mock\mock.py", line 2196, in __eq__
return (other_args, other_kwargs) == (self_args, self_kwargs)
File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 953, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我确实搜索了 valueError 但没有太多帮助。有人可以告诉我这里发生了什么吗?
我确实检查了以下问题,但这没有帮助
ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()