当前位置:首页 >焦点 >Python自动化测试的五种模型 需要的时候就调用它

Python自动化测试的五种模型 需要的时候就调用它

2024-06-30 17:21:45 [百科] 来源:避面尹邢网

Python自动化测试的自动种模五种模型

作者:Meng 开发 测试 本篇将列举实际自动化测试中,Python 自动化测试的化测五种模型:线性模型、模块化驱动模型、自动种模数据驱动模型、化测关键字驱动模型、自动种模行为驱动模型。化测

1、自动种模前言

在自动化测试中,化测我们往往将自动化脚本都归纳属于哪种框架模型,自动种模比如关键字驱动模型等。化测

Python自动化测试的五种模型 需要的时候就调用它

本篇将列举实际自动化测试中,自动种模Python 自动化测试的化测五种模型:线性模型、模块化驱动模型、自动种模数据驱动模型、化测关键字驱动模型、自动种模行为驱动模型。

Python自动化测试的五种模型 需要的时候就调用它

2、线性模型

通过录制或编写脚本,一个脚本完成一个场景(一组完整功能操作),通过对脚本的回放进行自动化测试。

Python自动化测试的五种模型 需要的时候就调用它

脚本代码:

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(30)driver.get('https://www.baidu.com/')time.sleep(1)driver.find_element_by_id('kw').send_keys('自动化测试')time.sleep(1)driver.find_element_by_id('su').click()time.sleep(1)driver.quit()

3、模块化驱动模型

将脚本中重复可复用的部分拿出来写成一个公共的模块,需要的时候就调用它,这样可以大幅提高测试人员编写脚本的效率。

框架目录:

config 存放配置文件。

例如 base_data.json 文件,存放测试地址。

{   "url": "https://www.baidu.com/"}

data 存放测试数据。

drivers 存放浏览器驱动文件。

report 存放执行完成后的测试报告。

test 存放测试用例。

case 测试用例步骤。

例如 testSearch.py:

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import timeimport osimport unittestfrom selenium import webdriverfrom AutomatedTestModel.ModularDriverModel.utils.ReadConfig import ReadConfigfrom AutomatedTestModel.ModularDriverModel.test.pages.searchPage import SearchPageclass TestSearch(unittest.TestCase):    def setUp(self):        self.driver = webdriver.Chrome()        self.driver.maximize_window()        self.driver.implicitly_wait(30)    def tearDown(self):        self.driver.quit()    def get_url(self):        current_path = os.path.abspath((os.path.dirname(__file__)))        data = ReadConfig().read_json(current_path + "/../../config/base_data.json")        return data['url']    def test_search(self):        url = self.get_url()        self.driver.get(url)        time.sleep(1)        search = SearchPage(self.driver)        search.search('自动化测试')if __name__ == '__main__':    unittest.main()

common 存放公共的方法等。

pages 存放页面元素与页面操作。

例如 searchPage.py:

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import timeclass SearchPage:    def __init__(self, driver):        self.driver = driver    def search_element(self):        self.kw = self.driver.find_element_by_id('kw')        self.su = self.driver.find_element_by_id('su')    def search(self, data):        self.search_element()        self.kw.send_keys(data)        time.sleep(1)        self.su.click()

runner 存放运行脚本。

例如 main.py:

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import osimport timeimport unittestfrom AutomatedTestModel.ModularDriverModel.utils.HwTestReport import HTMLTestReportclass Main:    def get_all_case(self):        current_path = os.path.abspath(os.path.dirname(__file__))        case_path = current_path + '/../case/'        discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")        print(discover)        return discover    def 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__':    Main().run_case()

utils 存放公共方法。

例如导出报告样式、读取配置文件等。

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 存放执行完成后的测试报告。

打开报告效果。

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 discover    def 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 == "":            return        else: # 如果不是其他的关键字,则默认为定位的元素            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:

case 存放测试用例步骤。

common 存放公共的方法等。

如读取 Excel 方法等。

RunMain.py 运行脚本。

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试from AutomatedTestModel.KeywordDrivenModel.action.Action import Actionif __name__ == '__main__':    excel = 'case/casedata.xlsx'    a = Action().case_operate(excel=excel, sheet='搜索')

6、行为驱动模型

行为驱动开发(Behave Driven Development,简称BDD),即从用户的需求出发强调系统行为。通过将BDD借鉴到自动化测试中,便产生了行为驱动测试模型,这种模型通过使用自然描述语言确定自动化测试脚本,其优点是可使用自然语言编写测试用例。

框架目录:

features 存放用例。

steps 存放步骤:

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试import timefrom behave import *@When('打开访问的网页 "{ url}"')def step_open(context, url):    context.driver.get(url)    time.sleep(5)@Then('进入百度网站成功')def step_assert_open(context):    title = context.driver.title    assert title == "百度一下,你就知道"@When('输入 "{ searchdata}"')def step_search(context, searchdata):    searchdata_element = context.driver.find_element_by_id('kw')    searchdata_element.send_keys(searchdata)    time.sleep(1)    submit_btn = context.driver.find_element_by_id('su')    submit_btn.click()@Then('获取标题')def step_assert_search(context):    success_message = context.driver.title    assert success_message == "自动化测试_百度搜索"

environment.py 存放变量。

search.feature 存放行为。

report、result 存放报告。

责任编辑:姜华 来源: AllTests软件测试 Python自动化测试

(责任编辑:探索)

    推荐文章
    热点阅读