python+pytest+uiautomator2+allure移动端测试(四)

50 阅读1分钟

上一章已经回顾了整个架构分层,这篇就写最关键的识别测试机设备(只写了单个的,双机配合用例暂时直接u2.connnect(sn号)做区分,一个main方法压测,后续再修改到这个架构)

新建devices.py

写一个get_devices_id方法取到adb devices的sn号

  1. 执行sh命令得到结果
  2. 截取后通过正则表达式返回座位id号
def get_devices_id(self):
    result = subprocess.check_output(['adb','devices']).decode()
    pattern = re.compile(r'(?P<id>[^\s]+)\t(?P<state>device)')
    devices = pattern.findall(result)[0][0]
    return devices

加上初始方法,在加载时就取到sn号

def __init__(self):
    self.device_id=self.get_devices_id()

加上未连接的方法做判断

def check_device(self):
    if self.device_id:
        self.deviceA = BasePage.set_devices(self.device_id)
    else:
        print('未找到设备')

测试用例中,先判断有无连上设备

deviceA = Devices().check_device()

调用封装的u2api,得到这个设备

@classmethod
def setup_class(cls):
    cls.deviceA = BasePage.get_devices(cls)

BasePage中,做一个u2的连接

@classmethod
def set_devices(slef,device_id):
    slef.deviceA= u2.connect(device_id)

def get_devices(self):
    return self.deviceA

下一篇记载u2一些基本操作的封装,我的想法是将识别不到元素就抛异常,打印log一并写进去,那么每个步骤都有会log,很清晰。 以上就是整个项目的架构了,剩下的就是往框架里面搬砖了。 开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3天