python - 机器人框架中的并行执行(线程)
问题描述
变量示例:
- UDID:[42439492、3203201]
- 平台版本:[8.0, 7,0]
- 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.
建议的方法?
- 修改代码以在python中不使用线程执行并行执行
- 我一直在阅读机器人框架的过程,看看我是否可以在机器人框架中做同样的事情。
- Pabot(这是一个很好的工具,但我们更喜欢只使用 python 或机器人框架)
如果有人可以提供一些见解或帮助,将不胜感激。
谢谢!
解决方案
推荐阅读
- regex - 用于将先前版本与 1.11.14 匹配的正则表达式
- sql - 如何根据一列是否已在另一列中可用来为一列生成新值?
- docusignapi - 使用 curl 下载信封 pdf
- sql - 如何进入下一步
- dolphindb - 用户定义函数作为 DolphinDB 插件中的参数
- python - 我的 python magic 8ball 程序没有使用我的 if 语句?
- c# - How to update carousel view in c# Xamarin?
- java - 我们如何在 Android 中运行测试用例
- logstash - 绕过Logstash混合日志的解决方案
- jenkins - 来自 Gitlab 的结帐在 Jenkins 管道中失败