单元测试 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 和 NaT
pd.isna(pd.NaT)

【讨论】:

以上是关于单元测试 python 数据类型 - 测试失败“预期:NaT 实际:NaT”的主要内容,如果未能解决你的问题,请参考以下文章

单元测试读取数据库失败是啥原因

如果任何单元测试失败,如何使 Python 的覆盖工具失败?

带有预加载 sqlite3 数据库的 iOS 单元测试

Python单元测试在失败后继续[重复]

python单元测试框架-unittest之跳过测试和预期失败

python单元测试pytest