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

时间:2018-02-12 08:13:50

标签: 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函数时收到无数邮件

1 个答案:

答案 0 :(得分:0)

根据您获得的日志判断,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分钟内完成。