【问题标题】:Unit testing python data types - test failed "Expected :NaT Actual:NaT"单元测试 python 数据类型 - 测试失败“预期:NaT 实际: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 数据框中的缺失值,请查看以下答案:stackoverflow.com/a/49435999/189418

标签: python unit-testing python-unittest


【解决方案1】:

NaN 和 NaT 明确地不等于它们自己。

您可以通过在交互模式下运行 python 并输入来测试:

import pandas as pd
pd.NaT == pd.NaT

类似

pd.NaN == pd.NaN

您可以使用

显式测试 NaN 和 NaT
pd.isna(pd.NaT)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2020-04-09
    • 2013-09-07
    • 2010-12-10
    • 2017-12-20
    相关资源
    最近更新 更多