自动化脚本代码appium+pytest+adb

pytest多线程与多设备并发appium​​​​​​​

使用adb获取应用的内存和CPU使用情况

import pytest
import subprocess# 测试用例:检查应用的内存使用情况
def test_memory_usage():package_name = 'com.example.myapp'memory_info = subprocess.check_output(['adb', 'shell', 'dumpsys', 'meminfo', package_name]).decode('utf-8')memory_usage = int(memory_info.split('TOTAL')[1].split()[0])assert memory_usage < 1000000, "内存使用超过阈值"# 测试用例:检查应用的CPU占用情况
def test_cpu_usage():package_name = 'com.example.myapp'cpu_info = subprocess.check_output(['adb', 'shell', 'top', '-n', '1', '-m', '10', '-s', 'cpu', '|', 'grep', package_name]).decode('utf-8')cpu_usage = float(cpu_info.split()[2])assert cpu_usage < 50, "CPU占用超过阈值"

在上面的更新后的示例代码中,我们使用了subprocess模块来调用adb命令获取应用的内存和CPU使用情况。在test_memory_usage函数中,我们使用adb shell dumpsys meminfo命令获取应用的内存信息,并提取出总内存使用量。在test_cpu_usage函数中,我们使用adb shell top命令获取应用的CPU占用信息,并提取出CPU使用率。最后,我们对内存和CPU使用情况进行断言判断。

top是一个Linux/Unix系统上的命令,用于实时显示系统中运行的进程的信息,包括进程的PID(进程ID)、用户、CPU占用率、内存占用等。在Android平台上,也可以通过adb shell top命令来查看系统中运行的进程信息。

-n 1:指定top命令只运行一次,显示一次进程信息后就退出。
-m 10:指定top命令只显示前10个CPU占用率最高的进程。
-s:按照CPU占用率进行排序,显示CPU占用率最高的进程在前面。

通过执行adb shell top -n 1 -m 10 -s命令,可以查看当前设备上CPU占用率最高的前10个进程,以便及时发现CPU占用率过高的情况。

appium和python实现单设备的app自动化测试,并通过pytest编写测试用例进行自动化测试

import pytest
from appium import webdriver# 启动appium server,占用端口4723
# 电脑与一个设备连接,通过adb devices获取已连接的设备# 定义启动参数
desired_caps = {'platformName': 'Android','deviceName': 'device_name','appPackage': 'com.example.myapp','appActivity': '.MainActivity'
}# 初始化driver
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 测试用例:检查应用的标题
def test_app_title():title = driver.find_element_by_id('com.example.myapp:id/title').textassert title == 'My App', "应用标题不匹配"# 测试用例:检查按钮点击功能
def test_button_click():button = driver.find_element_by_id('com.example.myapp:id/button')button.click()result = driver.find_element_by_id('com.example.myapp:id/result').textassert result == 'Button Clicked', "按钮点击功能异常"# 关闭driver
driver.quit()

在上面的示例代码中,我们使用appium的webdriver模块初始化了一个driver对象,连接到appium server。然后编写了两个测试用例,分别检查应用的标题和按钮点击功能。最后在每个测试用例中,通过driver对象来查找元素并执行相应的操作。最后关闭driver对象。

管理设备池、启动多个appium server、使用多线程执行pytest

以下是一个示例代码,演示如何通过管理设备池、启动多个appium server、使用多线程执行pytest来实现多设备并发测试。

示例代码中,我们定义了一个设备信息列表devices,包含了两个设备的信息。然后通过多线程的方式启动多个appium server,并执行测试用例。在每个线程中,通过不同的设备信息初始化driver对象,并执行测试用例。最后通过thread.join()等待所有线程执行完毕。

import pytest
from appium import webdriver
import threading# 定义设备信息列表
devices = [{'platformName': 'Android','deviceName': 'device1','appPackage': 'com.example.myapp','appActivity': '.MainActivity'},{'platformName': 'Android','deviceName': 'device2','appPackage': 'com.example.myapp','appActivity': '.MainActivity'}
]# 定义测试用例
def run_test(device_info):driver = webdriver.Remote('http://localhost:4723/wd/hub', device_info)# 测试用例:检查应用的标题def test_app_title():title = driver.find_element_by_id('com.example.myapp:id/title').textassert title == 'My App', "应用标题不匹配"# 测试用例:检查按钮点击功能def test_button_click():button = driver.find_element_by_id('com.example.myapp:id/button')button.click()result = driver.find_element_by_id('com.example.myapp:id/result').textassert result == 'Button Clicked', "按钮点击功能异常"driver.quit()# 启动多个appium server
def start_appium_server(port):# 启动appium server的代码# 启动多线程执行测试
threads = []
for i, device_info in enumerate(devices):port = 4723 + ithread = threading.Thread(target=start_appium_server, args=(port,))thread.start()threads.append(thread)for i, device_info in enumerate(devices):thread = threading.Thread(target=run_test, args=(device_info,))thread.start()threads.append(thread)for thread in threads:thread.join()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

景区云旅游/视频慢直播方案设计与平台搭建

一、行业背景 经文化和旅游部数据中心测算&#xff0c;今年清明节假期3天全国国内旅游出游1.19亿人次&#xff0c;按可比口径较2019年同期增长11.5%&#xff1b;国内游客出游花费539.5亿元&#xff0c;较2019年同期增长12.7%。踏青赏花和户外徒步成为假期的热门出游主题。随着…

VSCode SSH 连接 Could not establish connection to “XXX“: spawn UNKNOWN.

1. 确认问题&#xff1a; 拉取vscode终端&#xff1a;快捷键 ctrl(数字1旁边那个) 输入&#xff1a;ssh -V 2. 解决方法 2.1 找到本地SSH 位置 默认本地路径&#xff1a; C:\Windows\System32\OpenSSH 2.2 找到要修改的位置 进入 ssh 插件的设置&#xff08;可以通过在插…

VIM支持C/C++/Verilog/SystemVerilog配置并支持Win/Linux环境的配置

作为一个芯片公司打杂人口&#xff0c;往往需要一个皮实耐打上天入地的编辑器… 一、先附上github路径&#xff0c;方便取走 git clone gitgithub.com:qqqw4549/vim_config_c_verilog.git 二、效果展示 支持ctrl]函数/模块跳转&#xff0c;支持cscope字串全局代码搜索 依赖&am…

PostgreSQL的|| 和::

在 PostgreSQL 中&#xff0c;|| 是字符串连接运算符&#xff0c;它将两个字符串连接在一起。例如&#xff0c;如果我们有两个字符串 ‘Hello’ 和 ‘World’&#xff0c;则可以使用以下语句将它们连接在一起&#xff1a; SELECT Hello || World;这将返回 ‘HelloWorld’。 另…

The C programming language (second edition,KR) exercise(CHAPTER 2)

E x c e r c i s e 2 − 1 Excercise\quad 2-1 Excercise2−1&#xff1a;输出结果如图1和图2所示&#xff0c;这道练习题需要文章1和文章2的知识。 #include <stdio.h> #include <limits.h>float getFloat(char sign, unsigned char exp, unsigned mantissa); do…

数字人直播系统是什么?AI数字人直播间搭建方法来了!

无人直播的时代&#xff0c;短视频和直播平台正在风口&#xff0c;各条赛道内也早已人满为患&#xff0c;很多线下商家都想参与其中&#xff0c;因为时间、地方、设备等限制久久不能去实行起来。所以&#xff0c;数字人直播新模式成为了线下商家的救星&#xff0c;线下商家方法…

Java后端开发中Java 8,JVM和JDK的关系

Java后端开发中Java 8&#xff0c;JVM和JDK的关系 一、技术介绍1、Java 82、JDK&#xff08;Java Development Kit&#xff09;3、JVM&#xff08;Java Virtual Machine&#xff09; 二、相互关系三、总结 一、技术介绍 1、Java 8 Java8&#xff08;也就是Java1.8&#xff09…

go语言实现无头单向链表

什么是无头单向链表 无头单向链表是一种线性数据结构&#xff0c;它的每个元素都是一个节点&#xff0c;每个节点都有一个指向下一个节点的指针。"无头"意味着这个链表没有一个特殊的头节点&#xff0c;链表的第一个节点就是链表的头。 优点&#xff1a; 动态大小&…

分巧克力(蓝桥杯,二分,acwing)

题目描述&#xff1a; 儿童节那天有 K 位小朋友到小明家做客。 小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 N 块巧克力&#xff0c;其中第 i 块是 HiWi的方格组成的长方形。 为了公平起见&#xff0c;小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。 切出…

企业如何做好数字化?

企业进行数字化转型是一个复杂且系统性的过程&#xff0c;涉及战略规划、技术应用、组织变革、文化建设等多个方面。以下步骤和建议可以帮助企业做好数字化转型&#xff1a; 1、明确转型愿景和目标&#xff1a;确定企业的数字化愿景&#xff0c;明确转型的长期目标和短期里程碑…

全面备份:自动化MySQL服务器上所有数据库的备份策略

这篇博客提供了一个批量备份MySQL数据库的Shell脚本&#xff0c;并包含了详细的注释和使用说明。这个脚本能够自动化地备份服务器上所有的数据库&#xff0c;排除系统数据库&#xff0c;并在备份完成后压缩和清理旧文件。 脚本内容及注释 下面是脚本的内容&#xff0c;其中包…

烤羊肉串引来的思考--命令模式

1.1 吃羊肉串&#xff01; 烧烤摊旁边等着拿肉串的人七嘴八舌地叫开了。场面有些混乱&#xff0c;由于人实在太多&#xff0c;烤羊肉串的老板已经分不清谁是谁&#xff0c;造成分发错误&#xff0c;收钱错误&#xff0c;烤肉质量不过关等。 外面打游击烤羊肉串和这种开门店做烤…

基于Springboot4S店车辆管理系统

采用技术 基于Springboot4S店车辆管理系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员功能 首页 销售员管理 维修员管理 客户管理 供应…

服务器挖矿病毒查杀排查手册

生产紧急问题可私信博主 背景 好几个朋友都找过我说自己的服务或者网站异常的慢&#xff0c;甚至于无法访问 分析 拿到服务器权限登录服务器&#xff0c;执行top命令&#xff0c;发现存在100%cpu占用进程&#xff0c;cpu idle为0 看到此时基本很明确服务器存在挖矿程序 查…

Altair®(澳汰尔)Inspire™ Extrude Metal 专为进行高效金属挤压设计

所有挤压公司都希望消除成本高昂的原型设计&#xff0c;缩短重新设计周期。现在&#xff0c;各种规模的企业组织均可获得高等物理特性仿真技术。Inspire Extrude Metal 易于掌握&#xff0c;让所有工程师或设计师都能通过仿真&#xff0c;更好地了解任何特定金属合金的型材特性…

【问题处理】银河麒麟操作系统实例分享,银河麒麟高级服务器操作系统mellanox 网卡驱动编译

1.Mellanox 网卡源码驱动下载链接&#xff1a; https://www.mellanox.com/downloads/ofed/MLNX_EN-5.7-1.0.2.0/MLNX_EN_SRC-5.7-1.0.2.0.tgz 2.系统及内核版本如下截图&#xff1a; 3.未升级前 mellanox 网卡驱动版本如下&#xff1a; 4.解压 “MLNX_EN_SRC-5.7-1.0.2.0.tg…

2020 年 12 月青少年软编等考 C 语言一级真题解析

目录 T1. 字符三角形思路分析 T2. 计算 (a b) (c - b) 的值T3. 晶晶赴约会思路分析 T4. 角谷猜想思路分析 T5. 求满足条件的 3 位数思路分析 T1. 字符三角形 给定一个字符&#xff0c;用它构造一个底边长 5 5 5 个字符&#xff0c;高 3 3 3 个字符的等腰字符三角形。 时间…

未来AI技术方面的创业机会

私信博主&#xff0c;加入有前途的行业。 人工智能&#xff08;AI&#xff09;技术的快速发展和广泛应用为创业者提供了丰富的机会。随着技术的不断进步&#xff0c;AI的应用领域正在不断拓展&#xff0c;为创业者提供了广阔的创新空间。以下是一些未来AI技术方面的创业机会&a…

JavaWeb后端——Mybatis

概述 Mybatis&#xff1a;Java程序来对数据库进行操作&#xff0c;一款优秀的持久层框架&#xff0c;用于简化JDBC的开发 SSM&#xff1a;SpringMVC、Spring、Mybatis 快速入门 步骤2&#xff1a;注意数据库连接的四要素 application.properties&#xff1a;springboot 的默…