我正在基于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次错误触发或一小时的测试,但是在一小时的测试后循环并没有停止,有人可以帮我吗?
答案 0 :(得分:1)
您需要将代码中的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个触发器,因此循环仍在运行)
答案 1 :(得分:1)
当您应该使用or
语句时,您正在使用and
语句:
while trigger < 3 and time.time() - start_time < command_timeout:
使用当前代码,仅当两个条件均满足时,while循环才会终止
False
,当您真的希望当其中一个为False
时终止它。