文章插图
run.py 运行脚本 。
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试from AutomatedTestModel.ModularDriverModel.test.runner.main import Mainif __name__ == '__main__':Main().run_case()
运行后的测试报告 。
文章插图
4、数据驱动模型该模型会根据数据的变化而引起测试结果的改变 , 这显然是一个非常高级的概念和想法 。简单地说 , 该模型是一种数据的参数化呈现 , 即通过输入不同的参数来驱动程序执行 , 输出不同的测试结果 。
框架目录:
文章插图
case 存放测试用例步骤 。
文章插图
文章插图
common 存放公共的方法等 。
如读取 Excel 方法、生成报告等样式 。
文章插图
data 存放测试数据与预期结果 。
文章插图
文章插图
report 存放执行完成后的测试报告 。
【Python自动化测试的五种模型】打开报告效果 。
文章插图
RunMain.py 运行脚本 。
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import os, time, unittestfrom AutomatedTestModel.DataDrivenModeling.common.HwTestReport import HTMLTestReportclass RunMain:def get_all_case(self):case_path = os.getcwd()discover = unittest.defaultTestLoader.discover(case_path,pattern="Test*.py")print(discover)return discoverdef set_report(self, all_case, report_path=None):if report_path is None:current_path = os.path.abspath(os.path.dirname(__file__))report_path = current_path + '/report/'else:report_path = report_path# 获取当前时间now = time.strftime('%Y{y}%m{m}%d{d}%H{h}%M{M}%S{s}').format(y="年", m="月", d="日", h="时", M="分", s="秒")# 标题title = u"搜索测试"# 设置报告存放路径和命名report_abspath = os.path.join(report_path, title + now + ".html")# 测试报告写入with open(report_abspath, 'wb') as report:runner = HTMLTestReport(stream=report,verbosity=2,images=True,title=title,tester='Meng')runner.run(all_case)def run_case(self, report_path=None):all_case = self.get_all_case()self.set_report(all_case, report_path)if __name__ == "__main__":RunMain().run_case()
5、关键字驱动模型这是一种通过关键字的改变而引起测试结果改变的功能自动化测试模型 。QTP(UFT)、Robot Framework 等都是以关键字驱动为主的自动化测试工具 , 这类工具典型的特征就是具备一套易用的可视化界面 , 测试人员需要做的就是将测试脚本按照“填表格”的方式填入 , 并考虑三个问题就可以了:我要做什么?对谁做?怎么做?框架目录:
文章插图
action 主要存放动作事件、元素操作 。
文章插图
Action.py:
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试from AutomatedTestModel.KeywordDrivenModel.common.ExcelUtil import ExcelUtilfrom AutomatedTestModel.KeywordDrivenModel.action.ElementOperation import ElementOperationclass Action:def __init__(self):self.element = ElementOperation()def set_value(self, element, action, parameter=None):if element == "browser":return self.element.browser_operate(action, parameter)elif element == "time":return self.element.time_operate(action, parameter)elif element is None or element == "":returnelse: # 如果不是其他的关键字 , 则默认为定位的元素return self.element.element_operate(element, action, parameter)def case_operate(self, excel, sheet):all_case = ExcelUtil(excel_path=excel, sheet_name=sheet).get_case()for case in all_case:self.set_value(case[0], case[1], case[2])if __name__ == '__main__':excel = '../case/casedata.xlsx'Action().case_operate(excel=excel, sheet='搜索')
ElementOperation.py:文章插图
推荐阅读
- 图灵测试已死!ChatGPT通过人类考试也不算,超强AI评估新秀「逻辑谜题」
- Java 单元测试及常用语句
- 你是否知道如何使用Python Matplotlib创建令人惊叹的数据可视化?
- Python爬虫如何快速入门学习?
- Python处理Excel文件并打包EXE可执行文件
- Python可复用函数的六种最佳实践
- 手把手将Visual Studio Code变成Python开发神器
- 将 Pandas 换为交互式表格的 Python 库
- Django和Flask:Python Web开发的不同选择
- Python之父加入3年,微软终于对Python下手:直接放进Excel!