赞
踩
首先,确保你的测试脚本 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 None logging.info(f"命令输出: {output}") return output except Exception as e: logging.error(f"执行命令 '{command}' 时出错: {e}") return None def 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 True else: logging.error("无法启用 WiFi。") return False def 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 True else: logging.error("无法禁用 WiFi。") return False def 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 output def 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 状态。终止测试。") yield logging.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()
在你的项目目录下创建一个 pytest.ini
文件,并添加以下内容:
[pytest]
log_cli = true
log_cli_level = INFO
log_file = wifi_test.log
log_file_level = INFO
在你的项目目录下,运行以下命令:
pytest wifi_test.py
wifi_test.log
文件路径正确,并且你有写入权限。pytest --version
检查版本。logging.basicConfig
和 pytest.ini
中的日志配置没有冲突。如果按照这些步骤配置了日志记录和测试用例,应该能正确生成日志文件,并解决用例重复执行的问题。如果还有问题,可以进一步检查 pytest 的配置和命令是否正确。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。