如何设计一个数据驱动或关键字驱动的自动化框架
分享一个大牛的人工智能教程。零基础通俗易懂风趣幽默希望你也加入到人工智能的队伍中来请轻击人工智能教程https://www.captainai.net/troubleshooter这是一个很经典的问题。设计自动化框架时数据驱动和关键字驱动常常结合使用而不是非此即彼。下面分别说明核心设计思路以及如何融合。1. 数据驱动框架 (Data-Driven Framework)核心思想测试逻辑固定输入/输出数据变化。数据与脚本分离。典型架构TestCase.xlsx (数据) ↓ 测试脚本 (读取数据) ↓ 业务逻辑层 (执行相同操作) ↓ 断言结果 (对比期望值)关键组件数据源Excel/CSV/JSON/DB/YAML数据解析器统一读取接口参数化引擎将数据注入测试方法结果回写执行状态、实际结果写回数据文件代码示例 (Python Pytest Excel)import openpyxl import pytest def get_test_data(): wb openpyxl.load_workbook(testdata.xlsx) sheet wb.active data [] for row in sheet.iter_rows(min_row2, values_onlyTrue): data.append((row[0], row[1], row[2])) # 输入a,输入b,期望结果 return data pytest.mark.parametrize(a,b,expected, get_test_data()) def test_add(a, b, expected): assert a b expected适用场景大量类似用例登录不同账号、不同边界值测试需要非技术人员维护测试数据2. 关键字驱动框架 (Keyword-Driven Framework)核心思想将操作封装为“关键字”如click,inputText用表格描述测试步骤完全非编程。典型架构Excel 用例表 | Keyword | Argument1 | Argument2 | |-------------|------------|-------------| | openBrowser | chrome | | | navigate | https://x.com | | | inputText | username | testuser | | click | loginBtn | | | verifyText | welcome | Hello | ↓ 关键字引擎 (解析表格 → 反射调用对应函数) ↓ 库函数层 (Selenium/Appium/Requests)关键组件关键字库每个关键字对应一个函数执行引擎循环读取步骤动态调用函数上下文管理保存浏览器对象、变量可扩展支持变量替换结果日志步骤级通过/失败简化引擎示例class KeywordEngine: def __init__(self): self.driver None self.keywords { openBrowser: self._open_browser, navigate: self._navigate, inputText: self._input_text, click: self._click, verifyText: self._verify_text } def _open_browser(self, browser): self.driver webdriver.Chrome() def _navigate(self, url): self.driver.get(url) def run(self, excel_path): wb openpyxl.load_workbook(excel_path) for row in sheet.iter_rows(min_row2, values_onlyTrue): keyword, arg1, arg2 row if keyword in self.keywords: self.keywords[keyword](arg1, arg2) else: raise Exception(fUnknown keyword: {keyword})3. 两者融合的推荐设计混合框架实际工业级框架常采用数据驱动 关键字驱动 模块化的混合模式。架构分层层级职责示例测试用例层Excel/YAML 描述步骤数据- keyword: login, data: user1引擎层解析执行支持数据迭代循环数据集合调用关键字关键字层原子操作 可接受参数login(username, pwd)业务页面层Page Object 封装细节LoginPage.input_username()基础层Selenium/Appium/HTTP 封装DriverManager用例表示例ExcelCaseIDDataSetStepSeqKeywordParam1Param2TC001user_0011openBrowserchromeTC001user_0012login${username}${pwd}TC001user_0021openBrowserchromeTC001user_0022login${username}${pwd}同时维护一个TestData.xlsxDataSetusernamepwduser_001test1123456user_002test2wrongpwd引擎逻辑读取用例表按CaseIDDataSet展开数据遇到${var}时从 TestData 中替换逐步骤调用关键字4. 设计决策指南你的情况推荐方案只有测试人员会编程纯数据驱动 Pytest/TestNG测试人员不会编程或让业务人员维护用例关键字驱动或混合框架如 Robot Framework需要高度复用、大规模回归测试混合框架 Page ObjectAPI 自动化数据驱动为主参数化 JSON 请求体UI 自动化混合框架为主5. 成熟方案参考Robot Framework业界最成熟的关键字驱动框架支持数据驱动[Template]内置大量库。CucumberGherkin自然语言关键字更适合 BDD但也算广义关键字驱动。Katalon Studio内置混合框架表格驱动。自研当你有特殊需求内部系统、独特报告格式时。总结步骤选型Robot Framework快速落地或 自研混合框架最大灵活性定义关键字粒度不要太细如typeChar也不要太粗如doWholeProcess设计数据格式Excel/YAML/JSON支持变量、循环、条件实现引擎解析器 动态调用 日志/报告封装底层Web/App/API 驱动统一异常处理集成 CI/CDJenkins/GitHub Actions并发执行数据行
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2490785.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!