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

2024-10-01 01:36:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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控制台运行函数可以正常工作,但是从robot框架中循环可以无限地运行。如果您能提供有关为什么这个循环无限运行以及如何解决这个问题的任何信息,我将不胜感激。 提前谢谢

注意:发送邮件功能正常工作,我在运行发送批处理邮件功能时会收到无限多的邮件


Tags: 函数intestsendforemailbatch邮件
1条回答
网友
1楼 · 发布于 2024-10-01 01:36:26

从您得到的日志来看,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分钟内完成与你所说的方式。你知道吗

相关问题 更多 >