前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium系列(二十五)封装操作stf的方法

Appium系列(二十五)封装操作stf的方法

作者头像
雷子
发布2021-04-29 17:35:32
1.2K0
发布2021-04-29 17:35:32
举报

Appium系列分享

Appium自动化(一)常用的API接口

Appium自动化(二)常用的API接口

Appium自动化(三)常用的API接口

Appium自动化(四)常用的API接口

Appium自动化(五)常用的API接口

Appium自动化(六)Appium启动app

Appium自动化(七)通过脚本自动化获取apk的包名和对应启动activity

Appium自动化(八)通过脚本自动化获取设备deviceName和platformVersion

Appium自动化(九)如何处理多设备的启动参数

Appium自动化(十)如何控制多设备并行执行测试用例

Appium自动化(十一)实现一个简单的登陆功能

Appium自动化(十二)Appium+unittest组织测试用例

Appium自动化(十三)引入ddt管理测试用例数据

Appium自动化(十四)引入分层化思想优化代码

Appium系列(十五)继续利用分层化思想优化代码

Appium系列(十六)如何维护用例中定位元素

Appium系列(十七)将Appium服务端口号通过参数传递给测试用例

Appium系列(十八)多设备并行执行测试用例

Appium系列(十九)解决多机并行中的问题

Appium系列(二十)分析现有不足,打造牛逼测试框架

Appium系列(二十一)优化待测apk的传入和desired_caps内容优化

Appium系列(二十一)操作IOS设备利器——tidevice

Appium系列(二十二)基于tidevice封装IOS的adb命令

Appium系列(二十三)改造框架代码适配IOS自动化

Appium系列(二十四)对于现有的代码做个‘小手术’

Appium系列(二十五)引入stf 设备管理平台

前言

前一篇文章,我们介绍了搭建stf设备管理平台的技能。那么我们的测试框架怎么来用呢,其实也是很简单的。我们需要远程去操作链接设备平台。那么我们应该怎么去操作stf呢。本文带你揭秘。

正文

我们现在的平台和框架要打通,stf提供了开放的api接口。我们可以直接利用这些接口。在远程调用的时候呢,我们需要一个token,我们需要在stf配置一个通用的token。

点击Settings,选择keys。

然后点击+

然后点击Generats,创建。

然后复制出来给到key,注意key只会展示一次,我们需要记录下来。

我们可以使用crul去测试

代码语言:javascript
复制

curl -H "Authorization: Bearer  a2fa2821826a417cb65b7bf3308b61c54b0e6c051d1848f9a1559593a4a2ced4" http://localhost:7100/api/v1/devices

返回的结果:我本地没有设备,所以返回空。

那么接下来我们就是去封装一些我们操作stf的一些方法了。

我们需要在配置中配置token和stf服务地址

代码语言:javascript
复制
Test_stf_plan="http://localhost:7100"
Test_stf_token='a2fa2821826a417cb65b7bf3308b61c54b0e6c051d1848f9a1559593a4a2ced4'

那么我们接下来去封装一些方法,方便我们的操作,关于接口的,我在之前的文章中有分享。mac搭建stf设备集群管理平台。封装如下。

代码语言:javascript
复制

from config import Test_stf_plan, Test_stf_token
import requests, json


class StfPhoneOpear(object):
    def __init__(self):
        self.test_stf_plan = Test_stf_plan
        self.test_stf_token = Test_stf_token
        self.headers = {"Authorization": "Bearer " + Test_stf_token}

    def getstflist(self) -> list:
        '''
        获取所有的设备
        :return:
        '''
        requests_list = requests.get(Test_stf_plan + "/api/v1/devices", headers=self.headers).text
        allreslut = json.loads(requests_list)
        list_phone = allreslut['devices']
        all_list_dict = []
        for item in list_phone:
            iphone = {}
            iphone['url'] = item['remoteConnectUrl']
            iphone["platform"] = item['platform']
            iphone['version'] = item['version']
            iphone['serial'] = item['serial']
            iphone['use'] = item['using']
            all_list_dict.append(iphone)
        return all_list_dict

    def getonedetail(self, name) -> dict:
        '''
        获取设备详情
        :param name:
        :return:
        '''
        requests_list = requests.get(Test_stf_plan + "/api/v1/devices/" + name, headers=self.headers).text
        allreslut = json.loads(requests_list)
        item = allreslut['devices']
        iphone = {}
        iphone['url'] = item['remoteConnectUrl']
        iphone["platform"] = item['platform']
        iphone['version'] = item['version']
        iphone['serial'] = item['serial']
        return iphone

    def getoneconnecturl(self, name):
        '''
        获取设备远程操作地址
        :param name:
        :return:
        '''
        url = Test_stf_plan + "/api/v1/user/devices/" + name + '/remoteConnect'
        requests_list = requests.post(url,
                                      headers=self.headers).text
        allreslut = json.loads(requests_list)
        item = allreslut['remoteConnectUrl']
        return item

    def oparyonephone(self, name) -> bool:
        '''
        申请设备
        :param name:
        :return:
        '''
        data = {"serial": name}
        self.headers['Content-Type'] = 'application/json'
        requests_list = requests.post(url=Test_stf_plan + "/api/v1/user/devices",
                                      headers=self.headers, data=json.dumps(data)).text
        allreslut = json.loads(requests_list)
        if allreslut['success'] is True:
            return True
        return False

    def removeroneophen(self, name) -> bool:
        '''
        归还设备
        :param name:
        :return:
        '''
        requests_list = requests.delete(Test_stf_plan + "/api/v1/user/devices/" + name,
                                        headers=self.headers).text
        allreslut = json.loads(requests_list)
        if allreslut['success'] is True:
            return True
        return False
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档