如何在AWS Device Farm上运行基于Python 3.x的Appium测试?
问题根因
你遇到的问题不是Python 3不再被AWS Device Farm支持,也不是平台有未公开变更,核心原因是不同执行阶段的shell上下文是相互隔离的:
你在install阶段设置的环境变量、激活的Python 3虚拟环境,仅在install阶段生效,进入test阶段后环境会重置,此时调用的py.test是系统默认的Python 2.7对应的全局版本,就会出现版本不兼容报错。
修复方案
方案1(推荐:和原有配置逻辑兼容)
在test阶段重新激活Python 3虚拟环境后再执行测试,完整测试规范示例如下:
phases: install: commands: # 原有install阶段配置无需修改 - export PYTHON_VERSION=3 - cd $DEVICEFARM_TEST_PACKAGE_PATH - . bin/activate - pip install -r requirements.txt test: commands: - echo "Navigate to test package directory" - cd $DEVICEFARM_TEST_PACKAGE_PATH # 新增:test阶段重新激活Python 3虚拟环境 - . bin/activate - echo "Start Appium Python test" - py.test tests/ --junit-xml $DEVICEFARM_LOG_DIR/junitreport.xml
如果担心还是调用到全局的py.test,可以直接指定虚拟环境内的可执行文件:./bin/py.test tests/ --junit-xml $DEVICEFARM_LOG_DIR/junitreport.xml
方案2(兜底:直接调用全局Python 3)
如果不想依赖虚拟环境,也可以直接显式调用Python 3执行测试:
- 在
install阶段新增命令pip3 install -r requirements.txt,把依赖安装到全局Python 3环境 - 在
test阶段把测试命令替换为python3 -m pytest tests/ --junit-xml $DEVICEFARM_LOG_DIR/junitreport.xml
目前AWS Device Farm自定义测试环境依然对Python 3提供官方支持,没有发布过终止支持的公开通知。
内容的提问来源于stack exchange,提问作者Manuel Gallina
相关产品推荐
相关产品推荐

