【使用 Pytest 记录日志文件并确保测试用例正常执行】

1. 更新测试脚本

首先,确保你的测试脚本 wifi_test.py 配置了日志记录,并包含所有测试用例:

import subprocess
import time
import logging
import pytest
import sys# 配置日志记录
logging.basicConfig(filename='wifi_test.log', level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s')
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
logging.getLogger().addHandler(console_handler)def run_adb_command(command):"""运行 ADB 命令并返回输出。"""try:logging.info(f"执行命令: {command}")result = subprocess.run(command, shell=True, capture_output=True, text=True, encoding='utf-8', errors='ignore')output = result.stdout.strip() if result.stdout else Nonelogging.info(f"命令输出: {output}")return outputexcept Exception as e:logging.error(f"执行命令 '{command}' 时出错: {e}")return Nonedef enable_wifi():"""启用设备上的 WiFi。"""command = "adb shell svc wifi enable"run_adb_command(command)time.sleep(5)  # 等待 5 秒以确保 WiFi 已启用output = run_adb_command("adb shell dumpsys wifi")if output and "enabled" in output:logging.info("WiFi 启用成功。")return Trueelse:logging.error("无法启用 WiFi。")return Falsedef disable_wifi():"""禁用设备上的 WiFi。"""command = "adb shell svc wifi disable"run_adb_command(command)time.sleep(3)  # 等待 3 秒以确保 WiFi 已禁用output = run_adb_command("adb shell dumpsys wifi")if output and "disabled" in output:logging.info("WiFi 禁用成功。")return Trueelse:logging.error("无法禁用 WiFi。")return Falsedef start_wifi_scan():"""启动 WiFi 扫描。"""command = "adb shell cmd wifi start-scan"run_adb_command(command)def get_scan_results():"""获取 WiFi 扫描结果。"""command = "adb shell cmd wifi list-scan-results"output = run_adb_command(command)return outputdef check_wifi_status():"""检查 WiFi 状态。"""command = "adb shell dumpsys wifi"output = run_adb_command(command)if output:if "enabled" in output:return "enabled"elif "disabled" in output:return "disabled"return "unknown"@pytest.fixture(scope="module", autouse=True)
def setup_and_teardown():"""前置条件和后置清理"""logging.info("前置条件: 确保 WiFi 处于关闭状态。")status = check_wifi_status()logging.info(f"当前 WiFi 状态: {status}")if status == "enabled":logging.info("WiFi 已启用,尝试禁用 WiFi...")if not disable_wifi():logging.error("前置条件失败: 无法禁用 WiFi。终止测试。")pytest.exit("前置条件失败: 无法禁用 WiFi。终止测试。")elif status == "disabled":logging.info("WiFi 已处于关闭状态。")else:logging.error("无法确定 WiFi 状态。终止测试。")pytest.exit("无法确定 WiFi 状态。终止测试。")yieldlogging.info("测试结束,执行后置清理。")disable_wifi()def test_enable_wifi():"""用例 1: 启用 WiFi"""logging.info("用例 1: 启用 WiFi。")assert enable_wifi(), "用例 1: 启用 WiFi 失败"def test_start_wifi_scan():"""用例 2: 启动 WiFi 扫描并检查扫描结果"""logging.info("用例 2: 启动 WiFi 扫描并检查扫描结果。")start_wifi_scan()logging.info("等待 15 秒以获取扫描结果...")time.sleep(15)  # 等待扫描完成output = get_scan_results()assert output, "用例 2: WiFi 扫描结果为空"logging.info("用例 2: 扫描结果:")logging.info(output)def test_disable_wifi():"""用例 3: 检查 WiFi 状态。如果 WiFi 已启用,尝试在 3 秒内禁用 WiFi。"""logging.info("用例 3: 检查 WiFi 状态。如果 WiFi 已启用,尝试在 3 秒内禁用 WiFi。")status = check_wifi_status()logging.info(f"当前 WiFi 状态: {status}")if status == "enabled":logging.info("WiFi 已启用,开始尝试禁用 WiFi...")assert disable_wifi(), "用例 3: 禁用 WiFi 失败"else:logging.info("WiFi 当前未启用,不需要禁用。")if __name__ == '__main__':pytest.main()

2. 创建 pytest 配置文件

在你的项目目录下创建一个 pytest.ini 文件,并添加以下内容:

[pytest]
log_cli = true
log_cli_level = INFO
log_file = wifi_test.log
log_file_level = INFO

3. 运行测试

在你的项目目录下,运行以下命令:

pytest wifi_test.py

4. 其他可能问题的排查

  • 检查日志文件路径和权限:确保 wifi_test.log 文件路径正确,并且你有写入权限。
  • 检查 pytest 版本:确保你使用的是支持这些配置的 pytest 版本。可以通过运行 pytest --version 检查版本。
  • 检查日志配置:确认 logging.basicConfigpytest.ini 中的日志配置没有冲突。

如果按照这些步骤配置了日志记录和测试用例,应该能正确生成日志文件,并解决用例重复执行的问题。如果还有问题,可以进一步检查 pytest 的配置和命令是否正确。

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

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

相关文章

vue侦听器(Watch)精彩案例剖析一

目录 watch介绍 监视普通数据类型 监视对象类型 watch介绍 在 Vue 中,watch主要用于监视数据的变化,并执行相应操作。一旦被监视的属性发生变化,回调函数将自动被触发。当在 Vue 中使用watch来响应数据变化时,首先要清楚,watch本质上是一个对象,且必须以对象的…

HDShredder 7 企业版案例分享: 依照国际权威标准,安全清除企业数据

HDShredder 7 企业版用户案例 天津鸿萌科贸发展有限公司是德国 Miray 公司 HDShredder 数据清除软件的授权代理商。近日,上海某网络科技有限公司采购 HDShredder 7 企业版x4,为公司数据存储资产的安全清除工作流程配备高效的执行工具。HDShredder 7 企业…

划分型dp,CF 1935C - Messenger in MAC

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1935C - Messenger in MAC 二、解题报告 1、思路分析 比较简单的思路是反悔贪心,这里不展开说了,来说一下dp的做法 由于式子里面带绝对值,很烦,我们将pair按…

Bootstrap实现dialog上一步下一步多个弹窗交互

Bootstrap实现dialog上一步下一步多个弹窗交互 版本介绍: Bootstrap v3.3.7jQuery v3.5.1 一、功能介绍 重新设置bootstrap主题色内容区以card形式展示,纯js实现分页功能共两步骤,第一步选择模板,第二步进行其他操作步骤一内的按…

特征工程在机器学习中的重要性

特征工程在机器学习中的重要性 特征工程在机器学习中占据着至关重要的地位,它是连接原始数据与机器学习模型之间的桥梁。通过特征工程,我们可以将原始数据转换为机器学习算法能够有效利用的形式,从而提高模型的性能和准确性。以下是特征工程…

JAVA毕业设计153—基于Java+Springboot+小程序的校园维修管理系统小程序(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringboot小程序的校园维修管理系统小程序(源代码数据库)153 一、系统介绍 本项目分为用户、维修员、管理员三种角色 1、用户: 注册、登录、报修申报、报修…

师资培训丨AIGC 技术与大模型应用开发实战线下广州班莅临泰迪智能科技参观调研

7月23日,2024年第二期全国数字人才技能提升师资培训班——AIGC 技术与大模型应用开发实战线下广州班莅临广东泰迪智能科技股份有限公司产教融合实训基地参观调研,来自全国各地三十多名高校教师参与本次活动。泰迪智能科技董事长张良均、校企合作经理吴桂…

【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(上)

【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(上) 大家好 我是寸铁👊 【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(上)✨ 喜欢的小伙伴可以点点关注 💝 前言 本次文章分为上下两部分…

【区块链+绿色低碳】基于区块链的企业碳管理平台 | FISCO BCOS应用案例

在当今全球气候变化和环境问题日益严重的背景下,碳减排已成为全球共同面临的重要任务。作为能源消耗大户, 现代企业必须认识到碳减排的重要性,并采取有效措施实现碳减排。通过完善碳资产管理,企业可以清晰地了解 自身的碳排放情况…

矩估计与最大似然估计的通俗理解

点估计与区间估计 矩估计与最大似然估计都属于点估计,也就是估计出来的结果是一个具体的值。对比区间估计,通过样本得出的估计值是一个范围区间。例如估计一个人的年龄,点估计就是最终直接估计年龄为50岁,而区间估计是最终估计的…

hicp学习 VRRP选举过程、MSTP+VRRP混合组网

VRRP 的选举规则 1、先比优先级,越大越优先,默认优先级是100.范围 0-255,可配置的范围是1-254。0和255这两个优先级是保留的不配置 0:用来告诉 Backup 立即成为 Master。一般是 Master 设备主动退出 VRRP 组(人为删除…

WebKit引领潮流:CSS Container Queries深度解析

WebKit引领潮流:CSS Container Queries深度解析 在响应式设计的世界中,CSS媒体查询(Media Queries)一直是布局适应性的关键技术。然而,随着Web应用的复杂性增加,我们需要一种更精细的控制方式——CSS Cont…

探索原型设计的未来——Axure RP引领设计革新

在快节奏、高效率的现代产品开发过程中,原型设计工具成为了连接创意与实现的桥梁。而提到原型设计,我们不得不提Axure RP —— 一款集高保真原型设计、丰富交互制作及团队协作于一体的工具,已成为众多设计师和产品经理的首选。 获取Axure RP…

electron 网页TodoList应用打包win桌面软件数据持久化

参考: electron 网页TodoList工具打包成win桌面应用exe https://blog.csdn.net/weixin_42357472/article/details/140648621 electron直接打包exe应用,打开网页上面添加的task在重启后为空,历史没有被保存,需要持久化工具保存之前…

GO -操作mysql

数据库的连接 func initmysql() (err error) {dsn : "root:0806tcp(127.0.0.1:3306)/sql_demo" //固定格式db, err sql.Open("mysql", dsn)if err ! nil {panic(err)}err db.Ping()if err ! nil {fmt.Println("ping 失败")return err}// 数值…

从数据时代到智能时代,星环科技信雅达联合发布金融全栈解决方案

近年来,星环科技与信雅达在金融行业的多个关键领域展开了广泛而深入的合作,推出了一系列面向金融科技领域的联合解决方案。此次合作基于星环科技在大数据、人工智能和云计算领域的先进技术,以及信雅达在金融领域的深厚积累,围绕数…

nms概念

nms基本概念:非极大值抑制 用途:在做目标检测的时候,往往会生成很多很多候选框,在做目标检测的时候,往往会生成很多很多候选框。 处理流程: 1.对某一类按score对候选框进行排序,并选出score最…

爬虫学习——20.Scrapy框架(2)入门

Scrapy入门 前提:路径切换 cd copy path 复制绝对路径 1. 创建scrapy项目 scrapy startproject mySpider scrapy startproject(固定的) mySpider(不固定的 需要创建的项目的名字) 2. 进入项目里面:cd mySpider 3. 创建爬虫程序 scrapy genspider example example…

META 备受期待的 Llama 3 405B 即将发布

本心、输入输出、结果 文章目录 META 备受期待的 Llama 3 405B 即将发布前言Llama 3 405B或许会彻底改变专用模型的数据质量Llama 3 405B将形成新的模型生态系统:从基础模型到专家组合Llama 3 405B有最高效 API 的竞争Llama 3 405B 基准测试META 备受期待的 Llama 3 405B 即将…

【Unity国产化信创平台】麒麟银河V10系统虚拟机创建

目录 一、麒麟V10系统镜像下载 二、虚拟机创建流程 三、麒麟银河系统安装流程 一、麒麟V10系统镜像下载 https://www.kylinos.cn/# 官方访问还是会有问题,如果有需要麒麟银河Kylin系统V10的镜像文件,可以留下邮箱或者私信博主获取。 二、虚拟机创…