【UI自动化框架设计思路】runner:如何运行框架
一、简介
-
**功能:**自动化测试的运行器,负责整合 UI 识别与 UI 操作、读取配置文件并执行测试用例步骤。
-
参数:
config_pth:
配置文件的路径(字符串类型)。
-
说明:
Runner
类是整个自动化测试流程的核心入口点,通过加载配置文件并结合 UI 操作类,执行测试用例的步骤。它将配置管理、UI 操作和测试执行整合为一个完整的自动化测试流程。
二、代码解析
1. init 方法
-
**功能:**初始化 Runner 类,加载配置并创建 UI 自动化操作实例。
-
参数:
config_pth:
配置文件的路径(字符串类型)。
-
代码片段:
def __init__(self, config_pth): self.config = Config(config_pth) # 配置 self.action = UiAutomation(self.config.system, self.config.language) # 操作
-
说明:
-
创建 Config 类的实例 self.config,加载指定路径的配置文件。
-
使用配置中的系统(system)和语言(language)参数,创建 UiAutomation 类的实例 self.action,用于后续的 UI 操作。
-
2. simulation_operation_running
方法
-
**功能:**执行测试用例的步骤。
-
**参数:**无。
-
代码片段:
def simulation_operation_running(self): test_case_steps = self.config.read_case_csv() for step in test_case_steps: self.action.simulation_operation_step(step) self.config.wait_time(0.5)
-
说明:
-
调用
self.config.read_case_csv()
从配置文件中读取测试用例步骤,存储在test_case_steps
中。 -
遍历
test_case_steps,
对每个步骤调用self.action.simulation_operation_step(step)
执行对应的 UI 操作。 -
每执行一步后,通过
self.config.wait_time(0.5)
等待 0.5 秒,确保操作之间的稳定性。
-
3. run
方法
-
**功能:**执行多次测试。
-
参数:
count:
执行测试的次数(整数类型)。
-
代码片段:
def run(self, count: int): for i in range(count): self.simulation_operation_running()
-
说明:
-
接收一个整数参数
count,
表示需要执行测试的次数。 -
在循环中调用
simulation_operation_running
方法count
次,实现多次测试的功能,适用于需要重复验证的场景。
-
三、思路总结
核心思路可以总结如下:
-
模块化设计:
-
将**配置管理(Config 类)、UI 操作(UiAutomation 类)和测试执行(Runner 类)**分离到不同的模块,提高代码的可维护性和可扩展性。
-
Runner
类作为整合者,协调配置和操作模块,完成自动化测试的完整流程。
-
-
配置管理:
-
使用
Config
类加载配置文件,提供系统、语言等环境配置,以及测试用例步骤的读取功能。 -
通过配置文件驱动测试,确保测试用例的灵活性和可配置性,避免硬编码。
-
-
UI 操作:
UiAutomation
类负责具体的 UI 识别与操作,基于系统和语言配置,能够适配不同的测试环境。
-
测试执行:
-
simulation_operation_running
方法实现单次测试用例的执行,遍历每个步骤并调用 UI 操作,步与步之间加入 0.5 秒的等待时间以保证稳定性。 -
run 方法支持多次测试,满足重复执行的需求,提高测试的覆盖率和可靠性。
-
**AI(Grok 3)夸夸模式:**总的来说,作者的目标是创建一个结构清晰、功能完备的自动化测试框架,通过模块化设计和配置文件驱动,实现了 UI 自动化测试的高效性和灵活性。这种设计特别适合需要频繁调整测试用例或在不同环境下运行的场景。
完整代码如下
"""
@ author: Kahoku
@ date: 2024/08
@ description: 运行器
@update: 2024/11
1. 整合UI识别 与 UI操作两部分
2. 读取配置文件
3. 执行测试用例步骤
"""
from app.ui_automation import UiAutomation
from runner.config import Config
class Runner:
def __init__(self, config_pth):
self.config = Config(config_pth) # 配置
self.action = UiAutomation(self.config.system, self.config.language) # 操作
def simulation_operation_running(self):
test_case_steps = self.config.read_case_csv()
for step in test_case_steps:
self.action.simulation_operation_step(step)
self.config.wait_time(0.5)
def run(self, count: int):
for i in range(count):
self.simulation_operation_running()