单元测试 python 数据类型 - 测试失败“预期:NaT 实际:NaT”
Posted
技术标签:
【中文标题】单元测试 python 数据类型 - 测试失败“预期:NaT 实际:NaT”【英文标题】:Unit testing python data types - test failed "Expected :NaT Actual:NaT" 【发布时间】:2019-12-12 01:26:59 【问题描述】:我正在介绍使用unittest
模块对我的python 数据管道进行单元测试。
数据类对象示例:
class IsAvailable(Object)
employee_id: int = Property()
start_time: str = Property()
单元测试用例:
class TestIsAvailable(TestCase):
def setUp(self):
self.employee = pd.read_json('employee_leave.json', orient='records')
self.isAvailable = IsAvailable()
self.isAvailable.id = self.employee['start_time'][0]
def test_is_available_all_day_001(self):
assert self.isAvailable.start_time == pd.NaT
测试结果:
self = <tests.test_nodes.TestIsAvailable testMethod=test_is_available_all_day_001>
def test_is_available_all_day_001(self):
"""test employee is available all day on specific day of the week"""
> assert self.isAvailable.start_time == pd.NaT
E AssertionError: assert NaT == NaT
E + where NaT = <IsAvailable id=1>.start_time
E + where <IsAvailable id=1> = <tests.test_nodes.TestIsAvailable testMethod=test_is_available_all_day_001>.isAvailable
E + and NaT = pd.NaT
您如何测试数据类型?
【问题讨论】:
pd.NaT
不是数据类型。相反,它表示 datetime dtype 的缺失值。如果您想检查 pandas 数据框中的缺失值,请查看以下答案:***.com/a/49435999/189418
【参考方案1】:
NaN 和 NaT 明确地不等于它们自己。
您可以通过在交互模式下运行 python 并输入来测试:
import pandas as pd
pd.NaT == pd.NaT
类似
pd.NaN == pd.NaN
您可以使用
显式测试 NaN 和 NaTpd.isna(pd.NaT)
【讨论】:
以上是关于单元测试 python 数据类型 - 测试失败“预期:NaT 实际:NaT”的主要内容,如果未能解决你的问题,请参考以下文章
如果任何单元测试失败,如何使 Python 的覆盖工具失败?