Python自动化测试的五种模型( 二 )


文章插图
run.py 运行脚本 。
#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试from AutomatedTestModel.ModularDriverModel.test.runner.main import Mainif __name__ == '__main__':Main().run_case()运行后的测试报告 。

Python自动化测试的五种模型

文章插图
4、数据驱动模型该模型会根据数据的变化而引起测试结果的改变 , 这显然是一个非常高级的概念和想法 。简单地说 , 该模型是一种数据的参数化呈现 , 即通过输入不同的参数来驱动程序执行 , 输出不同的测试结果 。
框架目录:
Python自动化测试的五种模型

文章插图
case 存放测试用例步骤 。
Python自动化测试的五种模型

文章插图

Python自动化测试的五种模型

文章插图
common 存放公共的方法等 。
如读取 Excel 方法、生成报告等样式 。
Python自动化测试的五种模型

文章插图
data 存放测试数据与预期结果 。
Python自动化测试的五种模型

文章插图

Python自动化测试的五种模型

文章插图
report 存放执行完成后的测试报告 。
【Python自动化测试的五种模型】打开报告效果 。
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 等都是以关键字驱动为主的自动化测试工具 , 这类工具典型的特征就是具备一套易用的可视化界面 , 测试人员需要做的就是将测试脚本按照“填表格”的方式填入 , 并考虑三个问题就可以了:我要做什么?对谁做?怎么做?
框架目录:
Python自动化测试的五种模型

文章插图
action 主要存放动作事件、元素操作 。
Python自动化测试的五种模型

文章插图
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:
Python自动化测试的五种模型

文章插图


推荐阅读