gpt4 book ai didi

python - mock "sleep"

转载 作者:行者123 更新时间:2023-12-01 05:21:40 25 4
gpt4 key购买 nike

我正在编写一个可以异步触发某些事件的应用程序。测试如下所示:设置所有内容,休眠一段时间,检查事件是否已触发。

但是,由于等待,测试需要相当长的时间才能运行 - 我在每个测试中等待大约 10 秒。我觉得我的测试很慢 - 还有其他地方可以加快速度,但这个 sleep 似乎是最明显加快速度的地方。

消除 sleep 的正确方法是什么?有没有办法欺骗日期时间或类似的东西?

该应用程序是一个基于 Tornado 的 Web 应用程序,异步事件是通过 IOLoop 触发的,因此我没有办法自己直接触发它。

编辑:更多详细信息。

该测试是一种集成测试,我愿意模拟第三方代码,但不想直接触发我自己的代码。

该测试是为了验证某个消息是否使用 websocket 发送并在浏览器中正确处理。消息在客户端连接到 websocket 处理程序时开始的一定超时后发送。超时值被视为连接时的 datetime.now() 与数据库中的值之间的差异。在使用selenium请求页面之前,该值被人为设置为datetime.now() - 5秒。由于加载页面需要一些时间,并且在不同的机器上可能有点随机,因此我认为减少 5 秒的时间间隔并不明智。超时后加载页面将产生不同的结果(不应发送 websocket 消息)。

所以问题是要以某种方式强制tornado的IOLoop在websocket连接后的任何时刻发送消息 - 如果在设置数据库值后0.5秒内发生这种情况,则还需要等待4.5秒,我想尝试消除这种情况延迟。

两个明显需要模拟的地方是 IOLoop 本身和 datetime.now()。现在的问题是我应该对哪一个进行猴子修补以及如何修补。

最佳答案

如果您想模拟sleep,那么您不得直接在应用程序代码中使用它。我将创建一个类似 System.sleep() 的类方法,并在您的应用程序中使用它。然后可以模拟 System.sleep()

关于python - mock "sleep",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com