android - 在机器人中将 python 函数作为关键字运行会导致无限循环

标签 android python robotframework

我有一个 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 函数不断失败,就在日志记录之后的某个地方。
查看 ij 的值——它们永远不会超过 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/

相关文章:

javascript - 错误链接 Assets 失败。使用 --verbose 标志运行 CLI 以获取更多详细信息。错误 : Source and destination must not be the same

python - 如何利用 Robot Framework 编写正则表达式来查找/替换各种日期字符串

python - Robot Framework - 从表中获取跨度元素

python - 比较两次并返回一个基于比较的变量

robotframework - 多次运行测试用例并在测试统计下显示通过和失败计数

android - Gradle:无法解析符号RequestQueue

android - JQuery Mobile 中 WebView 底部的空白

android - 如何在 Android 中使用线性布局拆分三列

python - 检测主进程是否已从后台进程退出

python - 使用 openpyxl 激活第二个工作表