覆盖 auto_now 进行单元测试

2023-11-21

我已将数据库中的事件的一些时间戳定义为auto_now_add,因为信息应在存储事件的同时与其时间戳一起存储。

事件的描述是这样的

class NewEvent(models.Model):
    '''
    Individual event
    '''
    name = models.CharField(max_length=100)
    quantity = models.FloatField(null=True)
    timestamp = models.DateTimeField(auto_now_add=True)

为了测试该模块,我在数据库中生成一些信息test.py文件,这样:

    for event in EVENT_TYPES:
        time = datetime.datetime.now() - datetime.timedelta(days=1)
        for i in range(48):
            time = time.replace(hour=i / 2)
            NewEvent(name=event,
                     timestamp=time,
                     quantity=i).save()

我必须生成带有昨天时间戳的事件(然后模块将总结它们)。问题是您无法覆盖时间戳。时间戳是事件产生时的时间戳,文档说得很清楚。

那么,如何生成具有适当时间戳的数据来进行测试呢?我有几个想法:

  • 也许在模型类之外以不同的方式生成数据库数据。在哪里以及如何?
  • 以某种方式定义不同的类或更改类以在测试期间表现不同,例如

_

 if testing:
     timestamp = models.DateTimeField(auto_now_add=True)
 else:
     timestamp = models.DateTimeField(auto_now_add=False)

或者也许有一个更简单的方法来做到这一点......有什么想法吗?


处理这个问题的另一种方法是使用查询集update创建实例后,根据您的用例,这可能更有用。

As an update调用在 SQL 级别执行,它将跳过验证、信号和自定义保存功能。它将需要辅助数据库调用,这可能会影响性能,因此应谨慎使用。

for event in EVENT_TYPES:
    time = datetime.datetime.now() - datetime.timedelta(days=1)
    for i in range(48):
        time = time.replace(hour=i / 2)
        instance = NewEvent(name=event, quantity=i).save()
        NewEvent.objects.filter(pk=instance.pk).update(timestamp=time)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

覆盖 auto_now 进行单元测试 的相关文章

随机推荐

  • JSP - 使用 Apache Commons 上传文件

    为什么我的文件上传代码不起作用 我正在使用 commons fileupload 1 1 1 jar 另外 我在 NetBeans 6 1 中的 isMultipartContent 第二行中看到了删除线 Check that we hav
  • 纬度和经度错误 - Google Maps API JS 3.0

    一段时间后 谷歌地图似乎将属性名称 Qa或Pa 更改为Na或其他名称 var map function initialize var myLatlng new google maps LatLng 25 363882 131 044922
  • 设置 Canvas.LineTo 的线端样式

    有没有办法为 TCanvas LineTo 方法设置 lineends 的样式 它似乎默认为圆角末端 当 Pen Width 设置为较大值 例如 9 时 对于不同颜色的行中的多条线来说 这看起来非常糟糕 它看起来像这样 圆角末端 其中 代表
  • postgresqlNewConnection(drv, ...) RS-DBI 驱动程序中出现错误:(无法在 dbname 上连接 postgres@local

    我是新来的R我正在尝试使用 RStudio 连接到 PostgreSQL 我已经安装了RPostgreSQL并尝试了以下代码 gt library DBI lib loc R win library 3 2 gt library RPost
  • 部署到已在 IntelliJ IDEA 外部运行的 Tomcat 服务器

    我已经在我的 PC 上安装了 Tomcat 服务器 并将其添加为service在Windows中 所以现在每次我启动计算机时它都会启动 现在 在 IntelliJ 中我已经配置了一个应用程序服务器 那就是我的 Tomcat 服务器 但是当尝
  • 如何减少 Visual Studio 2015 中 Xamarin Forms 应用程序的用户代码大小?

    我今天在 Windows 7 上安装了 Visual Studio 2015 RTM 并在 Xamarin 上注册了一个新帐户 入门许可证 创建项目后 我尝试运行该应用程序 之前创建的 AVD 我得到的只是这个错误 mandroid 错误
  • 在 werkzeug 请求中检索 url 锚点

    我有一个 DAV 协议 可以在 url 锚点中存储带外数据 例如这ghi in DELETE abc def ghi 服务器是 Flask 应用程序 我可以看到请求通过网络传入tcpdump 但是当我查看 werkzeug Request
  • 如何使用Spark的repartitionAndSortWithinPartitions?

    我正在尝试构建一个最小的工作示例repartitionAndSortWithinPartitions以便理解该函数 到目前为止我已经完成了 不起作用 不同的值会乱七八糟地乱七八糟 def partval partID Int iter It
  • Python:使用相对路径导入excel文件

    我尝试导入一个与脚本不在同一文件夹中的 Excel 文件 我需要获取上面的一个文件夹 然后进入另一个文件夹 B folder 并且有文件 2 file xlsx I tried df pd read excel r B folder 2 f
  • 如何在Java小程序中正确指定代码库和存档?

    我使用 Firefox 版本 gt 3 5 3 5 3 6 4 我尝试指定archive and codebase属性正确但不起作用 我的小程序主类位于archive运行时加载的一些必要的类位于codebase 如果我只指定archive然
  • SDL_GetTicks() 精度低于毫秒级

    我目前使用 SDL2 进行编程 一切正常 但我有一个问题SDL GetTicks 方法 通常它应该返回以毫秒为单位的总应用时间 但大多数时候它总是返回值 0 有时返回值 1 我用以下命令初始化了 SDLSDL INIT EVERYTHING
  • 使用 Eclipse CDT 构建多模块 C 项目(即解决方案)

    我将从 Netbeans 迁移到 Eclipse 在 Ubuntu 12 0 4 上 我有一个 C 应用程序 它由几个子项目组成 这些子项目是库 共享和静态 以及独立的可执行文件 我不知道如何创建 父 项目foo 其中包含组件项目 foob
  • 使用 Retrofit 转换 json 数组?

    这是我的 Json nata center id 67 nata center name Primo Institute of Design nata center id 68 nata center name Sai Ganesh Ins
  • php 中的 header 是如何工作的?

    浏览 php net 网站 它有一个标头示例 它说会给我错误 我复制了它 并在 WAMP 上执行 但它没有显示任何错误 但确实重定向到该站点 只是想知道 它在我的 WAMP 上是否是正确的行为 或者它是一个错误 或者我是否在 php ini
  • 检索项目的父级时出错:升级到 AppCompat v23 后找不到与给定名称匹配的资源

    我一直使用 Eclipse 编写 Android 程序 并决定开始迁移到安卓工作室 我决定使用与 Eclipse 相同的 SDK 然后 开始了一个新项目 设置最低 SDK 4 0 API 级别 14 选择空白活动选项 活动名称和布局名称使用
  • 如何使 DACPAC 只更新一种架构?

    我有一个带有 sqlproj 项目的 VS2013 解决方案 其中包含特定于该解决方案的对象 问题是这对于其他项目来说也是常见的数据库 我的问题是自动将模式中的更改部署到数据库而不影响其他对象 默认情况下 DACPAC 会更新整个数据库 这
  • 如何在 Flex/bison 中实现 If 语句

    我没有收到错误消息 请您帮帮我 这是 l 和 y 文件 谢谢 include ifanw tab h extern int yylval return EQ return NE lt return LT lt return LE gt re
  • React Native - 禁用“屏幕尺寸”设置

    我目前正在开发一个 React Native 应用程序 我们的一些用户可能有轻微的视力问题 我们希望阻止在 Android 中设置 显示大小 因为这会使我们的应用程序无法使用 我们使用简单的代码行解决了字体大小的问题 Text defaul
  • 从多于一列的 pandas 数据帧构建 networkx 有向图或流程图

    我有 pandas 数据框 由 10 列组成 每行包含用户在线执行的一个步骤 总共 10 列 因此所有 10 个步骤过程 假设第一个活动是预订机票 那么步骤是 登录网站 gt 给出出发时间 gt 选择座位 gt 付款 审核 所以每一步都可能
  • 覆盖 auto_now 进行单元测试

    我已将数据库中的事件的一些时间戳定义为auto now add 因为信息应在存储事件的同时与其时间戳一起存储 事件的描述是这样的 class NewEvent models Model Individual event name model