python - 如何编写一个将在数小时内运行的 while 循环
问题描述
我正在基于 while 循环为 Google Assistant 创建一个测试。该代码将播放一个长的 mp3 文件,我试图确定助手是否会进行错误触发并计算多少次。
我在 pycharm/pytest 上运行并通过 Google 提供的 UIAutomator 获取触发状态。
import android
import time
play_music(music.mp3)
start_time = time.time()
trigger = 0
hours = 1
command_timeout = hours * 60 * 60
while trigger < 3 or time.time() - start_time < command_timeout:
if trigger_screen.is_in_screen():
trigger += 1
time.sleep(10)
stop_music()
停止循环的条件是 3 次错误触发或一小时测试,但测试一小时后循环没有停止,有人可以帮我吗?
解决方案
您需要将or
代码中的替换为and
如下所示:
import android
import time
play_music(music.mp3)
start_time = time.time()
trigger = 0
hours = 1
command_timeout = hours * 60 * 60
while trigger < 3 and time.time() - start_time < command_timeout:
if trigger_screen.is_in_screen():
trigger += 1
time.sleep(10)
stop_music()
基本上,只要满足其中一个条件,您编写的代码就会继续循环,这解释了为什么您的音乐继续播放(少于 3 个触发器,因此循环仍然运行)
推荐阅读
- html - 为什么这个 jQuery 对话框代码不起作用?一切似乎都很好
- node.js - 如何仅通过 mongoose 传递我在 GraphQL 中需要的数据
- c - 来自用户指定文件的单词和句子计数器
- html - 添加 CSS 后,按钮链接停止工作
- azure - 使用 c# 检索要存储到 Cosmos 中的 Blob 存储文件名
- bash - 用于删除整个 csv 文件的自动换行的 Linux 命令
- python - Python日期时间和函数
- reactjs - React Redux Connect DefaultRootState 输入
- php - 在 PHP 中多次返回
- javascript - 我可以在创建后立即获取文档密钥吗?