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

news2024/11/19 4:48:10

简介

我们之前介绍过使用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, validator


class Book(BaseModel):
    id: int
    name: str
    create_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, validator


class Book(BaseModel):
    id: int
    name: str
    create_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, validator


class Book(BaseModel):
    id: int
    name: str
    create_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 BaseModel


class Model(BaseModel):
    d: date = None
    dt: datetime = None
    t: time = None
    td: timedelta = None


m = 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数据,还有日期,时间点,时间差等数据的验证处理,希望本文对大家有所帮助。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1389861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HNU-模式识别-作业1-视频监控系统

模式识别-作业1 计科210X 甘晴void 202108010XXX 【评分&#xff1a;98/100】 题目&#xff1a; 查阅相关技术资料&#xff0c;根据自己家庭相应的情况&#xff0c;设计一个视频监控系统。要求&#xff1a; 系统功能说明系统布线图及说明系统软硬件配置说明 饱和式自家用…

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SO-GRU蛇群算法优化门控循环单元的数…

Leetcode21-环和杆(2103)

1、题目 总计有 n 个环&#xff0c;环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 0 到 9 的杆上。 给你一个长度为 2n 的字符串 rings &#xff0c;表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 &#xff0c;用于描述每个环&#xf…

超越GPU:TPU能成为接班人吗?

在计算机的世界里&#xff0c;硬件技术的发展一直在快速推进。今天&#xff0c;我们要谈论的就是一种特殊的处理器&#xff1a;TPU&#xff0c;全称是Tensor Processing Unit。在我们开始深入探讨TPU之前&#xff0c;先了解一下两个重要的芯片技术&#xff0c;FPGA和ASIC。 FP…

部署Tomcat

Tomcat简介 名称由来&#xff1a;Tomcat最初是由 Sun的软件构架师詹姆斯邓肯戴维森开发的&#xff0c;后来他帮助将其变 为开源项目&#xff0c;并由Sun贡献给Apache软件基金会&#xff0c;由于大部分开源项目OReilly都会出一本相关的 书&#xff0c;并且将其封面设计成某个动物…

基于SSM的戏剧推广网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue、HTML 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是…

TikTok电商加快闭环,独享IP为运营带来哪些好处?

近日有消息称TikTok电商在加快闭环&#xff0c;以后商家可能无法继续在TikTok上为其他电商平台或独立站引流了。如今“TikTok Shop Shopping Center”平台正在构建&#xff0c;将各种购物渠道整合为一体&#xff0c;这可能是一种趋势&#xff0c;意味着TikTok逐渐从社交应用转型…

web前端第二次

第一题&#xff1a; <!DOCTYPE html> <html> <head><title>计算奇数和</title> </head> <body><label for"input">请输入一个正整数&#xff1a;</label><input type"number" id"input&qu…

Temu活动库存怎么设置?Temu活动报名后无库存怎么办?站斧浏览器

Temu活动库存怎么设置&#xff1f; 了解平台规则&#xff1a;在设置库存之前&#xff0c;详细了解Temu平台的库存管理规则和最佳实践。 设定合理库存量&#xff1a;根据商品的销售历史、市场需求和生产能力&#xff0c;设定合理的库存量。 定期检查与调整&#xff1a;库存设…

供应链管理是什么?专业就业前景如何?

什么是供应链管理 供应链&#xff08;Supply Chain&#xff09;&#xff0c;也被称为价值链或需求链&#xff08;Demand Chain&#xff09;&#xff0c;包括顾客、供应商、过程、产品以及对产品和服务有影响的各种资源。供应链强调的是公司之间的过程与关系。 《中华人民共和国…

浏览器网页内嵌Qt-C++音视频播放器的实现,支持软硬解码,支持音频,支持录像截图,支持多路播放等,提供源码工程下载

一.前言 在浏览器中实现播放RTSP实时视频流&#xff0c;⼤体上有如下⼏个⽅案&#xff1a; ⽅案一&#xff1a;浏览器插件⽅案 ActiveX、NPAPI、PPAPI ActiveX插件适用于IE浏览器&#xff0c;NPAPI与PPAPI插件适用于谷歌浏览器&#xff0c;不过这些插件都已经不被浏览器所支持…

算法总结——单调栈

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 文章目录 一、单调栈的定义二、单调栈的应用&#xff1a;寻找左边第一个比它小的数寻找左边第一个比它小的数的下标寻找右边第一个小于它的数寻找右边第一个小于它的数的…

HCIP -- 重发布实验

要求&#xff1a; 实现&#xff1a; [rl]interface LoopBack 0 [rl-LoopBack0]ip ad [rl-LoopBack0]ip address 1.1.1.1 32 [rl-LoopBack0]q [rl]int [rl]interface go/0/0 [rl-GigabitEthernet0/0/0]ip add [rl-GigabitEthernet0/0/0]ip address 12.1.1.1 24on the interface…

第二篇:新建node项目并运行

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 安装 Node.js&#xff1a;首先&#xff0c;确保你的…

一篇文章带你了解接口测试(总结)

接口测试是软件测试中的一块重要部分&#xff0c;简言之&#xff0c;接口测试是指验证软件系统中各个模块间接口处的交互是否正确。 接口是软件组件之间交互的协议&#xff0c;允许不同的软件系统或模块通过明确定义的方法通信和交换数据。 一. 接口测试的重要性 在微服务架…

Agent检索增强生成

检索增强生成(RAG)设计模式通常用于在特定数据域中开发大语言模型(LLM)应用。然而&#xff0c;RAG的过往的研究重点主要在于提高检索工具的效率&#xff0c;例如嵌入搜索、混合搜索和微调嵌入&#xff0c;而忽视了智能搜索。本文介绍了一种受人类研究方法启发的新方法&#xff…

WordPress企业模板

首页大图wordpress外贸企业模板 橙色的wordpress企业模板 演示 https://www.zhanyes.com/waimao/6250.html

PDF有编辑密码怎么办

目录 注意&#xff1a; windows方法&#xff1a; 1 python 下载 2 打开命令行 3 安装 pikepdf 4 编写python脚本 5 使用py脚本 6解密完成 Linux方法&#xff1a; 注意&#xff1a; 此方法可以用于破解PDF的编辑密码&#xff0c;而不是PDF的打开密码 当遇到类似如下问…

SSC | Blue Prism报告:2024年智能自动化(IA)7大趋势预测

近日&#xff0c;RPA行业领导者SS&C | Blue Prism发布《2024智能自动化&#xff08;IA&#xff09;趋势与预测》报告。报告中提到&#xff0c;智能自动化&#xff08;IA&#xff09;与流程管理的有效融合&#xff0c;是实现数字化转型成功的核心。采用业务流程管理&#xf…

工业物联网的关键技术——青创智通工业物联网

1. 传感器技术&#xff1a;传感器是实现工业物联网感知层的重要技术之一&#xff0c;能够将物理量、化学量、生物量转化为可处理的数字信号&#xff0c;从而实现对物体状态的实时监测和自动控制。传感器技术是工业物联网应用中的关键核心技术之一&#xff0c;其性能和精度直接影…