1、appium+python 实现单设备的 app 自动化测试
启动 appium server,占用端口 4723
电脑与一个设备连接,通过 adb devices 获取已连接的设备
在 python 代码当中,编写启动参数,通过 pytest 编写测试用例,来进行自动化测试。
2、若要多设备并发,同时执行自动化测试,那么需要:
确定设备个数
每个设备对应一个 appium server 的端口号,并启动 appium
pytest 要获取到每个设备的启动参数,然后执行自动化测试。
3、实现策略
第一步:从设备池当中,获取当前连接的设备。若设备池为空,则无设备连接。
第二步:若设备池不为空,启动一个线程,用来启动appium server.与设备个数对应。
起始server端口为4723,每多一个设备,端口号默认+4
第三步:若设备池不为空,则启用多个线程,来执行app自动化测试。
4、具体实现步骤
4.1 通过 adb 命令,获取当前已连接的设备数、设备名称、设备的安卓版本号。
定义一个 ManageDevices 类。
1. 重启adb服务。
2. 通过adb devices命令获取当前平台中,已连接的设备个数,和设备uuid.
3. 通过adb -P 5037 -s 设备uuid shell getprop ro.build.version.release获取每一个设备的版本号。
4. 将所有已连接设备的设备名称、设备版本号存储在一个列表当中。
5. 通过调用get_devices_info函数,即可获得4中的列表。
实现的部分代码为:
"""@Title : app多设备并发-appium+pytest@Author : 柠檬班-小简@Email : lemonban_simple@qq.com"""
class ManageDevices:
"""1、重启adb服务。2、通过adb devices命令获取当前平台中,已连接的设备个数,和设备uuid.3、通过adb -P 5037 -s 设备uuid shell getprop ro.build.version.release获取每一个设备的版本号。4、将所有已连接设备的设备名称、设备版本号存储在一个列表当中。5、通过调用get_devices_info函数,即可获得4中的列表。"""
def __init__(self):
self.__devices_info = []
# 重启adb服务
self.__run_command_and_get_stout("adb kill-server")
self.__run_command_and_get_stout("adb start-server")
def get_devices_info(self):
"""获取已连接设备的uuid,和版本号。:return: 所有已连接设备的uuid,和版本号。"""
self.__get_devices_uuid()
print(self.__devices_info)
self.__g