簡體   English   中英

在機器人中將python函數作為關鍵字運行會導致無限循環

[英]Running a python function as keyword in robot causes infinite loop

我有一個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)  

我是從Robot Framework測試案例中調用的:

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分鍾內完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM