2023Python自动化测试5种模型(建议收藏)

2023-11-03 10:52

本文主要是介绍2023Python自动化测试5种模型(建议收藏),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、前言

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

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

2、线性模型

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

脚本代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import time
from 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、模块化驱动模型

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

框架目录:

1、config 存放配置文件。

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

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

2、data 存放测试数据。

3、drivers 存放浏览器驱动文件。

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

5、test 存放测试用例。

(1)case 测试用例步骤。

例如 testSearch.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-import time
import os
import unittest
from selenium import webdriver
from AutomatedTestModel.ModularDriverModel.utils.ReadConfig import ReadConfig
from 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()

(2)common 存放公共的方法等。

(3)pages 存放页面元素与页面操作。

例如 searchPage.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-import timeclass SearchPage:def __init__(self, driver):self.driver = driverdef 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()

(4)runner 存放运行脚本。

例如 main.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-import os
import time
import unittest
from 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 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__':Main().run_case()

6、utils 存放公共方法。

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

7、run.py 运行脚本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 软件测试from AutomatedTestModel.ModularDriverModel.test.runner.main import Mainif __name__ == '__main__':Main().run_case()

运行后的测试报告。

4、数据驱动模型

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

框架目录:

1、case 存放测试用例步骤。

2、common 存放公共的方法等。

如读取 Excel 方法、生成报告等样式。

3、data 存放测试数据与预期结果。

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

打开报告效果。

5、RunMain.py 运行脚本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-import os, time, unittest
from 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 等都是以关键字驱动为主的自动化测试工具,这类工具典型的特征就是具备一套易用的可视化界面,测试人员需要做的就是将测试脚本按照“填表格”的方式填入,并考虑三个问题就可以了:我要做什么?对谁做?怎么做?

框架目录:

1、action 主要存放动作事件、元素操作。

(1)Action.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-from AutomatedTestModel.KeywordDrivenModel.common.ExcelUtil import ExcelUtil
from 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='搜索')

(2)ElementOperation.py

2、case 存放测试用例步骤。

3、common 存放公共的方法等。

如读取 Excel 方法等。

4、RunMain.py 运行脚本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-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借鉴到自动化测试中,便产生了行为驱动测试模型,这种模型通过使用自然描述语言确定自动化测试脚本,其优点是可使用自然语言编写测试用例。

框架目录:

1、features 存放用例。

(1)steps 存放步骤

#!/usr/bin/env python
# -*- coding: utf-8 -*-import time
from 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.titleassert 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.titleassert success_message == "自动化测试_百度搜索"

(2)environment.py 存放变量

(3)search.feature 存放行为

2、report、result 存放报告

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

这篇关于2023Python自动化测试5种模型(建议收藏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/337684

相关文章

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll