软件测试|Pydantic处理时间类型数据

2024-01-16 20:52

本文主要是介绍软件测试|Pydantic处理时间类型数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

我们之前介绍过使用pydantic验证数据,比如校验数据的格式等,但是在我们的日常工作中,还有一种数据是需要我们验证的,比如时间数据,时间数据不同于字符串,列表等数据,与他们的验证不一样,本文就来为大家介绍一下pydantic如何验证时间数据。

datetime时间类型处理

首先,datetime有以下不同的数据:

  • datetime, 现有datetime对象
  • int或float,假定为 Unix 时间,即自 1970 年 1 月 1 日以来的秒数(if >= -2e10 or <= 2e10))或毫秒 (if < -2e10or > 2e10)
  • str, 则类似:YYYY-MM-DD[T]HH:MM[:SS[.ffffff]][Z or [±]HH[:]MM]]]int或float作为字符串(假定为 Unix 时间)

处理datetime数据,代码如下:

from datetime import datetime
from pydantic import BaseModel, validatorclass Book(BaseModel):id: intname: strcreate_time: datetime = None@validator('create_time', pre=True, always=True)def set_create_now(cls, v):return v or datetime.now()#  1.传datetime 对象
book1 = Book(id=1, name='muller', create_time=datetime.now())
print(book1.json())# 2.传字符串
book2 = Book(id=2, name='theshy', create_time="2023-10-24T12:00:10.707257")
print(book2.json())# 3.Unix 时间戳
book2 = Book(id=3, name='langx', create_time=1645506606260)
print(book2.json())-----------
输出结果如下:
{"id": 1, "name": "muller", "create_time": "2023-10-25T14:36:27.550312"}
{"id": 2, "name": "theshy", "create_time": "2023-10-24T12:00:10.707257"}
{"id": 3, "name": "langx", "create_time": "2022-02-22T05:10:06.260000+00:00"}

date 日期类型

date日期数据类型可能是以下类型:

  • date, 现有date对象
  • int或float,见datetime Unix 时间
  • str, 有效格式:YYYY-MM-DD int或float

处理date日期数据类型,代码如下:

from datetime import datetime, date
from pydantic import BaseModel, validatorclass Book(BaseModel):id: intname: strcreate_time: date = None@validator('create_time', pre=True, always=True)def set_create_now(cls, v):return v or date.today()#  1.传date 对象
book1 = Book(id=1, name='python', create_time=date.today())
print(book1.json())# 2.传字符串
book2 = Book(id=2, name='python', create_time="2023-10-01")
print(book2.json())# 3.Unix 时间戳
book2 = Book(id=3, name='python', create_time=1645506606260)
print(book2.json())-----------------
输出结果如下:
{"id": 1, "name": "python", "create_time": "2023-10-25"}
{"id": 2, "name": "python", "create_time": "2023-10-01"}
{"id": 3, "name": "python", "create_time": "2022-02-22"}

time时间点处理

time字段可以是:

  • time, 现有time对象
  • str, 以下格式有效:HH:MM[:SS[.ffffff]][Z or [±]HH[:]MM]]]

要对time进行处理,代码如下:

from datetime import datetime, date, time, timedelta
from pydantic import BaseModel, validatorclass Book(BaseModel):id: intname: strcreate_time: time#  1.传time 对象
book1 = Book(id=1, name='theshy', create_time=time(15, 26, 16))
print(book1.json())# 2.传字符串
book2 = Book(id=2, name='rookie', create_time="15:26:16")
print(book2.json())------------
输出结果如下:
{"id": 1, "name": "theshy", "create_time": "15:26:16"}
{"id": 2, "name": "rookie", "create_time": "15:26:16"}

timedelta时间差

timedelta对象表示的是两个时间点的时间差,两个datedatetime对象相减就可以返回一个timedelta对象。timedelta字段可以是:

  • timedelta, 现有timedelta对象
  • intfloat, 假定为秒
  • str, 以下格式有效:[-][DD ][HH:MM]SS[.ffffff] 和 [±]P[DD]DT[HH]H[MM]M[SS]S

要对时间差数据进行处理,代码如下:

from datetime import date, datetime, time, timedelta
from pydantic import BaseModelclass Model(BaseModel):d: date = Nonedt: datetime = Nonet: time = Nonetd: timedelta = Nonem = Model(d=1966280412345.6789,dt='2032-04-23T10:20:30.400+02:30',t=time(4, 8, 16),td='P3DT12H30M5S',
)print(m.dict())--------------
输出结果如下:
{'d': datetime.date(2032, 4, 22), 
'dt': datetime.datetime(2032, 4, 23, 10, 20, 30, 400000, tzinfo=datetime.timezone(datetime.timedelta(seconds=9000))), 
't': datetime.time(4, 8, 16), 
'td': datetime.timedelta(days=3, seconds=45005)}

总结

本文主要介绍了pydantic对于时间数据的处理,不只是datetime数据,还有日期,时间点,时间差等数据的验证处理,希望本文对大家有所帮助。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

这篇关于软件测试|Pydantic处理时间类型数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/613863

相关文章

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指