为什么 django Unittest 在比较两个 numpy.float64 实例时抛出断言错误?
Why does django Unittest throw an assertion error when comparing two instances of numpy.float64?
我正在编写一些单元测试,其中之一是检查数据框中提供的数据类型是否正确(浮点型)。
当我 运行 测试时 assertIsInstance(type(foo), np.float64)
测试失败并显示以下错误消息:AssertionError <class numpy.float64> is not an instance of <class numpy.float64>
我本以为这会过去。
test_dataframe_functions.py
import numpy as np
from django.test import TestCase
import pandas as pd
from myapp import dataframe_functions
class DataframeFunctionsTest(TestCase):
dataframe_to_test = dataframe_functions.create_dataframe
#passes
def test_dataframe_is_definitely_a_dataframe(self):
self.assertIsInstance(self.dataframe_to_test, pd.DataFrame)
#passes
def test_dataframe_has_the_right_columns(self):
column_headers = list(self.dataframe_to_test.columns)
self.assertEquals(column_headers, ['header1', 'header2', 'header3'])
#fails with AssertionError <class numpy.float64> is not an instance of <class numpy.float64>
def test_dataframe_header1_is_correct_format(self):
data_instance = self.dataframe_to_test['header1'].iloc[1]
self.assertIsInstance(type(data_instance), np.float64)
我已经使用以下代码行检查 type(data_instance)
是否等于 "class numpy.float64":
print(type(dataframe_to_test['header1'].iloc[1]))
因为 type
对象确实 不是 np.float64
的实例。 assertIsInstance
方法应该用 assertIsInstance(object, type)
调用,因此它检查 object
是否是 type
(的子类型)的实例。 type
对象不是 np.float64
.
的实例
因此你应该这样调用:
assertIsInstance(<b>foo</b>, np.float64)
不适合:
assertIsInstance(<s>type(foo)</s>, np.float64)
我正在编写一些单元测试,其中之一是检查数据框中提供的数据类型是否正确(浮点型)。
当我 运行 测试时 assertIsInstance(type(foo), np.float64)
测试失败并显示以下错误消息:AssertionError <class numpy.float64> is not an instance of <class numpy.float64>
我本以为这会过去。
test_dataframe_functions.py
import numpy as np
from django.test import TestCase
import pandas as pd
from myapp import dataframe_functions
class DataframeFunctionsTest(TestCase):
dataframe_to_test = dataframe_functions.create_dataframe
#passes
def test_dataframe_is_definitely_a_dataframe(self):
self.assertIsInstance(self.dataframe_to_test, pd.DataFrame)
#passes
def test_dataframe_has_the_right_columns(self):
column_headers = list(self.dataframe_to_test.columns)
self.assertEquals(column_headers, ['header1', 'header2', 'header3'])
#fails with AssertionError <class numpy.float64> is not an instance of <class numpy.float64>
def test_dataframe_header1_is_correct_format(self):
data_instance = self.dataframe_to_test['header1'].iloc[1]
self.assertIsInstance(type(data_instance), np.float64)
我已经使用以下代码行检查 type(data_instance)
是否等于 "class numpy.float64":
print(type(dataframe_to_test['header1'].iloc[1]))
因为 type
对象确实 不是 np.float64
的实例。 assertIsInstance
方法应该用 assertIsInstance(object, type)
调用,因此它检查 object
是否是 type
(的子类型)的实例。 type
对象不是 np.float64
.
因此你应该这样调用:
assertIsInstance(<b>foo</b>, np.float64)
不适合:
assertIsInstance(<s>type(foo)</s>, np.float64)