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

这篇具有很好参考价值的文章主要介绍了软件测试|Pydantic处理时间类型数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

软件测试|Pydantic处理时间类型数据,软件测试,功能测试,软件测试,自动化测试,程序人生,职场和发展

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

软件测试|Pydantic处理时间类型数据,软件测试,功能测试,软件测试,自动化测试,程序人生,职场和发展文章来源地址https://www.toymoban.com/news/detail-795127.html

到了这里,关于软件测试|Pydantic处理时间类型数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 当软件测试迭代测试时间不够时该如何去做好质量控制呢?

    大家好,今天我们一起来聊聊,当我们在工作中尤其是快速迭代版本中测试版本的时间被压缩的很短,甚至不够完成用例执行时怎么去做好质量控制呢? 在我们的日常生活中导致软件测试时间不够的原因有很多,那么在这些不确定的人为因素中如何去做好呢? 1、需求层面:

    2024年02月10日
    浏览(56)
  • 软件测试工程师面试应对如何估算要写多少条测试用例,耗费多长时间?

    作为测试工程师,对测试用例的数量预估是一项基本能力,并且也很重要。因为在衡量和预报工作计划中十分重要,例如,设计用例需要几天,设计多少条、执行多长时间。 首先,预估测试用例数量最重要的依据就是需求。比如下面的这个软件设计界面和需求: 需求: 会员

    2024年02月04日
    浏览(53)
  • 软件测试/测试开发丨Selenium 网页frame与多窗口处理

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27048 点击某些链接,会重新打开⼀个窗⼜,对于这种情况,想在新页⾯上操作,就 得先切换窗⼜了。 获取窗⼜的唯⼀标识⽤句柄表⽰,所以只需要切换句柄,就可以在多个页⾯灵 活操作了 先获

    2024年02月10日
    浏览(49)
  • 软件测试|如何使用Selenium处理隐藏元素

    简介 我们在使用selenium进行web自动化测试时,有时候会遇到元素被隐藏,从而无法对元素进行操作,导致我们的用例报错的情况。当我们遇到元素被隐藏的情况时,需要先对隐藏的元素进行处理,才能继续进行我们的操作,本文就为大家介绍一下如何使用selenium处理隐藏的元

    2024年01月19日
    浏览(49)
  • 软件测试 | Selenium对多浏览器处理

    在执行自动化测试过程中,我们往往会针对不同的浏览器做兼容性测试,可以通过对测试用例代码的改造,实现对不同浏览器的自动化兼容性测试。 注:实现对不同浏览器的自动化兼容性测试,需要先将各个浏览器的驱动在PC端配置好,具体的配置方式可参考Selenium的官方文

    2024年02月12日
    浏览(44)
  • 软件测试/测试开发丨Selenium Web自动化多浏览器处理

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27185 用户使用的浏览器(firefox,chrome,IE 等) web 应用应该能在任何浏览器上正常的工作,这样能吸引更多的用户来使用 是跨不同浏览器组合验证网站或 web 应用程序功能的过程 是兼容性测试的一个

    2024年02月09日
    浏览(64)
  • 软件测试|使用selenium处理单选框和多选框

    简介 我们在web自动化测试工作中,经常会遇到对单选框(Radio Buttons)或者多选框(Checkboxes)进行操作的场景,单选框和多选框主要是用于我们做出选择或提交数据。本文将主要介绍selenium对于单选框和多选框的操作。 处理单选框 单选框允许用户从多个选项中选择一个选项。

    2024年01月17日
    浏览(43)
  • 软件测试|如何使用selenium处理iframe富文本输入框

    简介 在网页开发中,富文本框是常见的元素,用于输入富文本内容,如富文本编辑器或邮件编辑器。如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框,可能会遇到一些挑战。本文将详细介绍如何使用Python和Selenium来向iframe富文本框输入内容,并提供示例代码

    2024年01月20日
    浏览(39)
  • 软件测试-如何准备测试数据

    准备测试数据是软件测试种非常重要的一个环节,无论是手工测试、动化测试还是性能测试,准备工作种除了分析外最重要的就是准备测试数据。 从创建测试数据的维度来看,准备测试数据的方法主要分为四大类 1.基于 GUI 操作生成测试数据; 2.通过 API 调用生成测试数据;

    2024年02月08日
    浏览(44)
  • 【软件测试】学习笔记-统一测试数据平台

    这篇文章主要探讨全球大型电商企业中关于准备测试数据的最佳实践,从全球大型电商企业早期的测试数据准备实践谈起,分析这些测试数据准备方法在落地时遇到的问题,以及如何在实践中解决这些问题。其实,这种分析问题、解决问题的思路,也是推动着测试数据准备时

    2024年01月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包