首页 > 解决方案 > 机器人框架中的并行执行(线程)

问题描述

变量示例:

  1. UDID:[42439492、3203201]
  2. 平台版本:[8.0, 7,0]
  3. Appium 端口:[4921、4320]

目前的问题

我有 2 个 UDID,因此它将运行 2 个端口。但目前它只是继续无限地创建新端口。

Python 代码

以下代码导致 appium 服务器继续在新端口上启动。

所以问题是当我只调用python脚本时代码可以工作,但如果我通过机器人框架调用它,它不会结束。所以我们发现机器人框架可能不是线程安全的。

def run_tests_on_devices(udid):
    threads=[]    

for idx, device in enumerate(udid):

    cmd = "robot --variable PLATFORM_VERSION:" + str(get_platform_version_of_android_phone(device)) + " --variable DEVICE_UDID:" + str(device) + " --variable APPIUM_PORT:" + str(appiumInstances[idx]) + " android.robot"
    t = threading.Thread(target=run_command, args = (cmd,))
    t.daemon = True
    threads.append(t)


for x in threads:
    x.start()
    sleep(3)
    #Code is printing/working until here
for x in threads:
    x.join()
    #Does not reach until this stage. x.join() does not seem to be executed so the server kept on starting a new port.

建议的方法?

  1. 修改代码以在python中不使用线程执行并行执行
  2. 我一直在阅读机器人框架的过程,看看我是否可以在机器人框架中做同样的事情。
  3. Pabot(这是一个很好的工具,但我们更喜欢只使用 python 或机器人框架)

如果有人可以提供一些见解或帮助,将不胜感激。

谢谢!

标签: pythonrobotframeworkpython-multithreading

解决方案


推荐阅读