自动化测试工具 使用 stf_selector 模块来对 STF 上的 device 进行筛选

cesc · 发布于 2016年12月29日 · 最后由 wt23556 回复于 2017年1月09日 · 833 次阅读
本帖已被设为精华帖!

项目的由来

在小红薯运行我们的分布式移动自动化Cartier项目的时候,我们经常需要根据一些不同的条件来筛选一批在部署在STF上符合要求的设备,并做为启动参数传入到我们的自动化框架中,实现Android设备的并行自动化。例如所有三星的机器,所有Android 操作系统版本大于5.0的机器等。为了解决这个问题,我们实现了一个简单的Python模块来支持针对STF的Restful接口的返回结果进行高效方便的查询。相信很多在使用STF的团队也会和我们有一样的困扰,我们把这个项目开放给社区的同学使用,也希望可以收集到更多大家的需求,把这个工具做的越来越好

项目地址:https://github.com/RedQA/stf-selector

STF的返回格式

下面是STF常见的返回一部手机信息


{'devices': [
            {
                'status': 3,
                'product': 'R9PlusmA',
                'browser': {
                    'selected': True,
                    'apps': [{}]
                },
                'reverseForwards': [],
                'battery': {},
                'statusChangedAt': '2016-10-21T13: 29: 16.111Z',
                'operator': ',',
                'owner': None,
                'airplaneMode': False,
                'presenceChangedAt': '2016-10-22T03: 28: 40.586Z',
                'ready': True,
                'using': False,
                'serial': '778d4f10',
                'createdAt': '2016-10-21T12: 30: 24.250Z',
                'sdk': '22',
                'network': {},
                'remoteConnect': False,
                'abi': 'arm64-v8a',
                'remoteConnectUrl': None,
                'platform': 'Android',
                'version': '5.1.1',
                'present': False,
                'provider': {
                    'name': 'red-Inspiron-3647',
                    'channel': 'O1HNR2n6Q+iWYV2YAEZRhw=='
                },
                'model': 'R9PlusmA',
                'manufacturer': 'OPPO',
                'display': {
                    'secure': True,
                    'height': 1920,
                    'width': 1080
                },
                'channel': 'a/nbaUCQMduULvq/8HeNTwtCWNs=',
                'phone': {}
            }
            ]
            }

常见的需求

  1. 需要所有sdk大于19的设备
  2. 需要所有三星的设备
  3. 需要sdk大于21,并且是三星的手机
  4. 需要display的height是1920,width是1080的手机

环境需求

  • macOS,linux,windows
  • STF
  • python2、python3

轻松使用

安装stf-selector

pip安装:

$ pip install stf-selector

或者从 GitHub下载解压缩安装:

$ python setup.py install

常见的使用方法

根据STF的API,首先需要一个token,如何获取这个token,可以参考 Authentication.获取完token以后,把STF和token赋值。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from stf_selector.selector import Selector
from stf_selector.query import where

# Your STF's url, like: https://stf.example.org/api/v1/user
url = ""
# Token genereated from the STF, some like:"3e5dd447c..."
token = "" 

一些例子

  • 得到所有STF上的设备
s = Selector(url=url, token=token)
device_list = s.load().devices()
  • 获取所有三星的设备
s = Selector(url=url, token=token)
s.load()
device_list = s.find(where("manufacturer")=="SAMSUNG").devices()
  • 获取版本是’5.0‘并且设备是’SAMSUNG‘的手机
s = Selector(url=url, token=token)
s.load()
conds = (where("manufacturer")=="SAMSUNG") & (where('version')=='5.0')
device_list = s.find(conds).devices()
共收到 9 条回复
96

不错,赞一个👍

5512

数据库操作没困难呀。
r.table('devices').filter(r.row(manufacture).eq('SAMSUNG').and(r.row(version).eq('5.0')))
然后直接用dpapi.loaddiveces().then()......

605

不错,赞~

建议把标题里面的 “如何” 去掉吧,一开始还以为是提问帖。

605 chenhengjie123 将本帖设为了精华贴 12月30日 09:45
605

加精理由:功能实用,且做成了开源库分享,很符合社区鼓励的分享方式。

4181

手工赞一个。

用我的头像防守你的头像如何

9489

@jet 估计小法就要来踢中超了,要么你也复出踢一个?

104

记得更新打赏二维码或者个人微信. 你已经错过10元打赏

96

高手👍

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册