知名自适应网站建设哪家好,wordpress检索蜘蛛插件,seo外贸网站建设,天津室内设计公司排行一、前置说明
在自动化测试中#xff0c;经常需要验证多台设备的兼容性#xff0c;Appium可以用同一套测试运例并行测试多个设备#xff0c;以达到验证兼容性的目的。 解决思路#xff1a; 查找已连接的所有设备#xff1b;为每台设备启动相应的Appium Server#xff1b…一、前置说明
在自动化测试中经常需要验证多台设备的兼容性Appium可以用同一套测试运例并行测试多个设备以达到验证兼容性的目的。 解决思路 查找已连接的所有设备为每台设备启动相应的Appium Server使用多线程执行 pytest 命令 二、核心代码
# test_multi_devices.pyimport pytestfrom driver.appium.manager import port_managerpytest.fixture(scopesession)
def devicename(request):return request.config.getoption(--devicename)pytest.fixture
def driver(devicename):from driver.appium.driver import WebDriverserver_port port_manager.get_server_port(devicename)trans_port port_manager.get_trans_port(devicename)# appium 多设备并行注意事项# 1. server_port: 必须传值它是 appium server 的监听端口号在启动多个 appium server的情况下用于指定当前driver与哪个 server 进行通信# 2. uuid: 必须传值它是每个设备的唯一标识用于appium server区分与哪台设备在通信确保测试执行不会混淆# 3. systemPort: 必须传值是UiAutomator2 Server的6790端口绑定至本地的端口号该端口用于在本地监听并接收从 UiAutomator2 Server 发出的请求appium_server_url fhttp://localhost:{server_port}capabilities {platformName: Android,automationName: uiautomator2,deviceName: devicename,udid: devicename,app: D:\\resources\\ApiDemos-debug.apk,systemPort: trans_port}driver WebDriver(command_executorappium_server_url, capabilitiescapabilities)yield driverdriver.quit()def test_runner(driver):driver.smart_find_element(bytext, valueApp).click()driver.smart_find_element(bytext, valueNotification).click()driver.smart_find_element(bytext, valueNotifyWithText).click()driver.smart_find_element(bytext, valueSHOW SHORT NOTIFICATION).click()element driver.get_toast(Short notification)assert element.text Short notification
# main.pyimport threading
import pytest
from driver.appium.manager import MobileDevicesManager, AppiumServersManager, device_managerfrom driver.appium.manager import port_managerPY_RUNNER tests/test_multi_devices.pydef start_server_and_run_pytest(devicename):启动Appium Server并且执行pytestport port_manager.get_server_port(devicename)# 为每台设备启动一个appium serverserver_manager AppiumServersManager(port)server_manager.start_server()# 执行pytestpytest.main([PY_RUNNER, -s, -v, --devicename, devicename])def run_multi_devices():多设备并行测试devices device_manager.get_connected_devices()threads []for devicename in devices:thread threading.Thread(targetstart_server_and_run_pytest, args(devicename,))threads.append(thread)# 启动线程thread.start()# 等待所有线程完成for thread in threads:thread.join()if __name__ __main__:import logging.configlogging.config.fileConfig(conf/logging.conf)# 执行并发测试run_multi_devices()
三、Demo验证
当前有3台设备连接执行代码会启动3个appium server: 3台设备会同时执行测试有1台为手机不方便截图
四、appium 多设备并行注意事项
# 1. server_port: 必须传值它是 appium server 的监听端口号在启动多个 appium server的情况下用于指定当前driver与哪个 server 进行通信# 2. uuid: 必须传值它是每个设备的唯一标识用于appium server区分与哪台设备在通信确保测试执行不会混淆# 3. systemPort: 必须传值是UiAutomator2 Server的6790端口绑定至本地的端口号该端口用于在本地监听并接收从 UiAutomator2 Server 发出的请求appium_server_url fhttp://localhost:{server_port}capabilities {platformName: Android,automationName: uiautomator2,deviceName: devicename,udid: devicename,app: D:\\resources\\ApiDemos-debug.apk,systemPort: trans_port}driver WebDriver(command_executorappium_server_url, capabilitiescapabilities)欢迎技术交流