首页 > 解决方案 > 如何编写一个将在数小时内运行的 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 次错误触发或一小时测试,但测试一小时后循环没有停止,有人可以帮我吗?

标签: pythonwhile-loop

解决方案


您需要将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 个触发器,因此循环仍然运行)


推荐阅读