我正在编写一些单元测试,其中之一是检查数据框中提供的数据是否为正确的类型(浮点型)。
我运行测试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]))
答案 0 :(得分:1)
因为type
对象实际上不是np.float64
的实例。 assertIsInstance
方法应该用assertIsInstance(object, type)
调用,因此它检查object
是否是type
(的子类型)的实例。 type
对象不是np.float64
的实例。
因此,您应该使用以下方式调用它:
assertIsInstance(foo, np.float64)
不符合:
assertIsInstance(type(foo), np.float64)