我有一个 python 函数:
def send_batch_email(recipient, batch=3, limit=50):
for i in range(0, batch):
for j in range(0, limit):
jsonStr = "{\"Subject\":\""+str(i+1)+"--"+str(j+1)+"\", \"Recipient\":\""+recipient+"\"}"
logger.info(jsonStr, also_console=True)
send_email(jsonStr)
time.sleep(200)
我从机器人框架测试用例中调用:
Validate sync of multiple emails
[Tags] Test2
kill_app %{appName}
Wait Until Keyword Succeeds 5 min 0 sec send batch email %{localAccount}
上述测试用例的控制台输出如下:
{"Subject":"1--1", "Recipient":"test@anuraagbaishya.xyz"}
{"Subject":"1--1", "Recipient":"test@anuraagbaishya.xyz"}
{"Subject":"1--1", "Recipient":"test@anuraagbaishya.xyz"}
{"Subject":"1--1", "Recipient":"test@anuraagbaishya.xyz"}
....(infinitely)
从 Python 控制台运行该函数工作正常,但从机器人框架循环无限运行。对于此循环无限运行的原因以及如何解决此问题的任何意见,我将不胜感激。 提前致谢
注意:send_email 函数工作正常,我在运行 send_batch_email 函数时收到了无限多的邮件
最佳答案
从您获得的日志来看,python 函数不断失败,就在日志记录之后的某个地方。
查看 i
和 j
的值——它们永远不会超过 0;所发生的只是 Wait Until Keyword Succeeds
继续执行该函数,并且每次都继续失败。
查看 Robotframework 的执行日志 - 它可能会提供导致失败的详细信息/回溯。如果这没有帮助,请使用此反模式记录异常:
# ...inside the inner loop
logger.info(jsonStr, also_console=True)
try:
send_email(jsonStr)
except Exception as ex: # catch *any* exception
logger.error('Failure: {}'.format(ex))
raise ex
顺便说一句,这不是一个无限循环,它会按照您的调用方式在 5 分钟内完成。
关于android - 在机器人中将 python 函数作为关键字运行会导致无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48741983/