gpt4 book ai didi

python - 循环内的 Jython 异常处理

转载 作者:行者123 更新时间:2023-11-28 22:07:47 26 4
gpt4 key购买 nike

我正在使用 Marathon 2.0b4 来自动化应用程序的测试。

wait_p 是 Marathon 提供的脚本元素之一,它的默认超时是硬编码为 60 秒。由于我的应用程序加载时间较长,我需要更长的超时时间。
[我考虑过修补 Marathon,但不想维护并行版本等,因此认为更好的解决方案实际上是测试脚本级别的解决方法。]

def wait_p_long(times, compID_name, ppty_name, ppty_value, compID_cell=None):
from marathon.playback import *
"""Wrapper around wait_p which takes exactly the same parameters as wait_p,
except that an extra first parameter is used to specify the number of times
wait_p is called"""
for i in range(1, times):
try:
wait_p(compID_name, ppty_name, ppty_value, compID_cell)
except:
if (i < times):
print "wait_p failed, trying again"
else:
raise

wait_p 是“wait property”的缩写,它接受3个必选参数和1个可选参数(参数名称不言自明),它所做的是等待一个特定的属性指定组件的等于指定值。

上述方法 (Jython) 打算做的是采用一个额外的参数,times,它指定尝试 wait_p 的次数,抑制异常直到最后的尝试。

但是,这种方法对我不起作用,恐怕其中某处可能存在语法或逻辑错误。那里有 python/jython 专家的评论吗?

谢谢!

最佳答案

@Hank 的解释是正确的,但我建议采用不同的方法:

def wait_p_long(times, compID_name, ppty_name, ppty_value, compID_cell=None):
from marathon.playback import *
for i in range(times-1):
try:
wait_p(compID_name, ppty_name, ppty_value, compID_cell)
break
except:
pass
else: # try one last time...!
wait_p(compID_name, ppty_name, ppty_value, compID_cell)

我觉得它在概念上更简单(尽管 wait_p 调用的文本重复是一个负号,它避免了检查 i 做一些不同的“最后一次” ”)。如果循环中没有执行过 break,循环中的 else 子句就会执行,顺便说一下。

关于python - 循环内的 Jython 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1719262/

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