页面事务作为组织测试自动化的新方式

页面事务作为组织测试自动化的新方式

照片提供:mateus campos felipe

猩红鹮(Guará)

猩红鹮,学名 Eudocimus ruber,属于鹮科鸟类,栖息于热带南美洲和加勒比海地区。其外形与其他27种鹮类相似,但鲜艳的猩红色羽毛使其独具特色。它是特立尼达和多巴哥的国鸟之一,其图皮-瓜拉尼语名称“Guará”也是巴西沿海一些城市名称的一部分。

Guará:一种简化测试自动化的Python设计模式

Guará是页面交易模式的Python实现,旨在简化测试自动化过程。它并非一个自动化工具,而是一种编程模式,可与Selenium及其他自动化驱动程序(包括Linux、Windows和移动端)兼容。其核心思想是将用户在应用程序中的交互(例如登录、注销或提交表单)定义为“交易”,从而提高测试代码的可读性、可维护性和灵活性。Guará避免与特定自动化工具绑定,赋予测试人员更大的选择自由。无需安装新的插件或学习新的知识,即可与Appium、Playwright、Robot Framework、Puppeteer等工具配合使用。

Guará利用命令模式(GoF)将用户交互分组到交易中。它关注用户旅程,而非UI元素本身,通过抽象复杂性使测试语句更易于理解,类似于自然语言。测试人员可以灵活地扩展自定义断言,弥补框架本身的不足。

Guará框架示例:网页语言切换

以下代码片段模拟了网页中的语言切换:

from selenium import webdriverfrom guara.transaction import applicationfrom guara import it, setupimport homedef test_language_switch():    app = application(webdriver.chrome())    # 打开应用程序    app.at(setup.openapp, url="https://example.com/")    # 切换语言并断言    app.at(home.changetoportuguese).asserts(it.isequalto, "conteúdo em português")    app.at(home.changetoenglish).asserts(it.isequalto, "content in english")    # 关闭应用程序    app.at(setup.closeapp)

每个用户交易都定义为一个单独的类(例如,changetoportuguese),继承自abstracttransaction。测试人员只需重写do方法,框架即可完成其余工作。

from guara.transaction import abstracttransactionclass changetoportuguese(abstracttransaction):    def do(self, **kwargs):        self._driver.find_element(by.css_selector, ".btn-pt").click()        return self._driver.find_element(by.css_selector, ".content").text

测试运行后,日志中会显示交易和断言信息:

test_demo.py::test_language_switch 2025-01-24 21:07:10 INFO Transaction: setup.OpenApp2025-01-24 21:07:10 INFO  url: https://example.com/2025-01-24 21:07:14 INFO Transaction: home.ChangeToPortuguese2025-01-24 21:07:14 INFO Assertion: IsEqualTo2025-01-24 21:07:14 INFO  Actual Data: Conteúdo em Português2025-01-24 21:07:14 INFO  Expected: Conteúdo em Português2025-01-24 21:07:14 INFO Transaction: home.ChangeToEnglish2025-01-24 21:07:14 INFO Assertion: IsEqualTo2025-01-24 21:07:14 INFO  Actual Data: Content in English2025-01-24 21:07:14 INFO  Expected: Content in English2025-01-24 21:07:14 INFO Transaction: setup.CloseApp

测试人员可以使用pytest等工具进行测试,并利用其fixture功能进行设置和拆卸。

Guará的优势

每个类代表一个完整的用户交易,提高了代码的可重用性。代码使用类似自然语言的表达方式,方便非技术人员理解和参与。测试人员可以创建和共享自定义断言。Guará可以与各种自动化工具集成,支持REST API、单元测试、桌面和移动端测试自动化。由于采用了命令模式,Guará甚至可以应用于产品开发。

Guará的使用

Guará的安装非常简单:

pip install guara

使用abstracttransaction类,以及runneratasserts方法。 使用pytest和详细日志进行测试执行:

python -m pytest -o log_cli=1 -log-cli -level=info

更多示例请参考教程。

总结

Guará为测试人员提供了一种新的代码组织方式,使其易于阅读、维护和与各种自动化驱动程序集成。它促进了测试人员与非技术人员之间的协作,并允许测试人员扩展和共享自定义断言。 现在就尝试Guará吧!

以上就是页面事务作为组织测试自动化的新方式的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1355800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 19:27:06
下一篇 2025年12月13日 19:27:28

相关推荐

  • Day Recartory -TS + Python +重新申请和类型

    本文探讨了在Python中处理嵌套数据结构(字典和列表)中空字符串的通用方法。作者首先用TypeScript展示了递归处理的思路,然后逐步用Python实现,最终采用字典和列表推导式优化代码。 作者最初的Python代码采用迭代方式处理字典和列表,递归调用自身处理嵌套结构,将空字符串替换为&#822…

    2025年12月13日
    000
  • Python记录:Loguru vs Logging

    python日志库对比:logging与loguru 本文将比较Python的内置logging库和流行的第三方库Loguru,帮助您选择合适的日志记录解决方案。 1. Loguru:简化日志记录 在Python开发中,日志记录至关重要。它用于记录程序运行状态、调试问题和监控系统健康状况。虽然Pyt…

    2025年12月13日
    000
  • Python 缓存可变值

    Python缓存陷阱:可变对象与lru_cache 为了提升处理速度,缓存机制被广泛应用于各种系统,从cpu级别到数据库前端。缓存失效策略是缓存系统中一个复杂且重要的议题。本文将探讨一个看似简单却困扰开发者1.5年的缓存问题,以及如何通过简单的策略有效规避。 背景:本文作者在构建一个基于sklear…

    2025年12月13日
    000
  • 一天的天气仪表板:我如何构建一个用于API集成和云存储的Python项目

    30天天气仪表盘:一个基于Python的AWS S3天气数据应用程序 本项目是一个使用python和openweather api获取多个城市天气数据,并将其存储到aws s3存储桶中的应用程序。该项目旨在展示api集成、云资源管理和安全凭证处理的最佳实践。 主要功能: 获取指定城市的实时天气数据(…

    2025年12月13日 好文分享
    000
  • 使用 Cohere command-r 和 Streamlit 创建具有上下文检索功能的聊天机器人

    项目概述:Chatish——基于Cohere的智能文档交互应用 Chatish是一款创新的简化Web应用,利用Cohere的命令式语言模型,展现上下文检索的强大功能。它演示了现代AI如何通过智能、上下文感知的对话来改变文档交互方式。 架构组件: 应用由四个主要Python模块构成: app.py: …

    2025年12月13日
    000
  • 用SQLModel在Python中实现主动记录模式

    Python开发者在使用SQLModel时,常常怀念Rails中优雅的数据库交互方式。本文将介绍如何在Python中,借助SQLModel实现类似Rails的Active Record模式,兼顾类型安全和Python最佳实践。 许多从Ruby on Rails转到Python的开发者,都会想念Act…

    2025年12月13日
    000
  • 在Ubuntu上安装Pytorch和Jupyterlab

    请我喝杯咖啡☕ 第一步,更新您的Ubuntu系统: sudo apt update && sudo apt -y upgrade 确认Python版本: python3 –version# 例如:Python 3.12.3 根据您的Python版本安装venv: (例如,Pytho…

    2025年12月13日
    000
  • 分布式系统:设计可扩展的Python后端

    现代互联网应用几乎都是分布式系统,由多台协同工作的计算机或服务器组成。这种架构能够有效应对高并发用户访问,避免单机服务器带来的性能瓶颈。例如,一个大型网站若仅依靠单服务器运行,则在用户流量激增时容易出现卡顿和响应缓慢等问题。而分布式系统通过将应用拆分成多个独立服务,部署在不同的服务器上,并通过相互通…

    2025年12月13日
    000
  • [python] 如何在不使用pytz、dateutil的情况下转换不同时区的日期和时间

    tl;tr 使用datetime模块的astimezone方法。 from datetime import datetimefrom zoneinfo import zoneinfolt = datetime.now(tz=zoneinfo(“localtime”))lt.astimezone(zo…

    好文分享 2025年12月13日
    000
  • 使用 Nestjs、RAG、Prisma 和 Gemini API 构建上下文感知的待办事项列表

    本教程演示如何利用检索增强生成 (RAG) 技术构建一个具备上下文感知能力的待办事项列表应用。我们将结合Google Gemini API进行文本嵌入,借助pgvector高效管理向量数据,并使用Prisma和NestJS框架操作PostgreSQL数据库。此方案将实现诸如去重任务和基于上下文检索相…

    2025年12月13日
    000
  • 如何编写你的第一个人工智能:初学者指南

    人工智能(AI)正在彻底改变各行各业,而创建您的第一个AI项目将是一个令人兴奋的里程碑。本指南将引导您逐步创建一个简单的AI模型,为未来的探索奠定坚实的基础。 1. 明确问题 在开始编码之前,请确定您希望AI解决的具体问题。例如: 预测房屋价格(基于位置、大小等特征)。将图像分类为猫或狗等类别。 清…

    好文分享 2025年12月13日
    000
  • Smolagents简介

    Smolagents:简化AI代理开发 Hugging Face推出的Smolagents,让AI代理开发变得前所未有的轻松。AI代理能够自主完成用户或系统指令,并整合了网页搜索、代码工具等实用功能。它利用大型语言模型(LLM)与外部数据交互,充当系统内的决策和行动中介。 Smolagents优势:…

    好文分享 2025年12月13日
    000
  • 建立抵押计算器:一个教育项目

    介绍 作为扩大编程技能的旅程的一部分,我最近完成了一个教育项目:抵押计算器。该项目是Codecademy计算机科学课程的一部分,旨在教授Python编程和解决问题的基础知识。尽管由于家庭承诺和全职工作而没有时间专用于此,但我还是决心完成该项目并运用我学到的概念。 除了个人成长外,我还在学习如何编码以…

    好文分享 2025年12月13日
    000
  • 在代码出现第13天应用Cramer的规则

    第13天的编程挑战相对简单,尤其对数学基础扎实的朋友来说。起初我尝试蛮力法,但很快意识到随着难度增加,这种方法效率低下。在尝试解决这个问题时,我已经落后几天了。在参考了朋友的建议后,我研究了克莱默法则,最终找到了解决方案。 这是一个代码难题,涉及到一个非传统的爪机控制。我们有两个按钮,分别标记为a和…

    2025年12月13日 好文分享
    000
  • 构建成功的 WhatsApp 克隆应用程序的必备功能

    WhatsApp 自2009年诞生以来,彻底改变了人们的沟通方式,并为即时通讯应用树立了标杆。如今,它已成为全球范围内不可或缺的数字工具,研究显示超过80%的智能手机用户使用类似WhatsApp的应用。 本文将深入探讨WhatsApp克隆应用的概念,并重点介绍构建成功克隆应用所需的五大核心功能。 我…

    2025年12月13日
    000
  • 最后,我的 FSM 库的应用程序! 11 月 11 日代码问世

    我们终于完成了 10 个谜题,超越了我之前的记录(尽管我还有第 24 天和第 25 天的时间来解决,而且我可能需要在第二部分中重新审视第 12 天)。巧合的是,我能够调整我的 fsm 库来解决第 11 天的问题。虽然这不是最有效的解决方案,但我很乐意分享它。 由 microsoft copilot …

    2025年12月13日
    000
  • 如何构建大型烧瓶应用程序 – 5 人最佳实践

    构建清晰、易于维护和扩展的Flask RESTful API至关重要。本文将介绍一些最佳实践,帮助您高效构建大型Flask应用。 项目结构 一个高效的Flask REST API项目结构如下: 项目/│├── app/│ ├── init.py│ ├── config.py│ ├── models/…

    2025年12月13日
    000
  • 混合相似度算法

    混合相似度算法详解 本文深入探讨基于定制神经网络的混合相似度 (hybridsimilarity) 算法,该算法用于衡量两段文本间的相似性。此混合模型巧妙地融合了词汇、语音、语义和句法相似性,从而得到一个更全面的相似度评分。 import numpy as npfrom sklearn.featur…

    2025年12月13日
    000
  • 使用 Phidata SDK 构建特定领域 AI 代理的分步指南

    人工智能代理的构建正日益受到企业关注,许多公司竞相创建自己的代理。虽然从零开始构建ai代理是可行的,但开发人员常常被构建和测试不同ai工具(用于函数调用)所需的时间所困扰,这导致开发周期延长。 然而,新的解决方案不断涌现,旨在简化AI代理的构建过程。Phidata便是其中之一。 什么是Phidata…

    2025年12月13日 好文分享
    000
  • (Odoo 系列)- Ubuntu 桌面上的#Simple Odoo 开发

    致敬社区开发者! Odoo(前身为OpenERP)已成为全球最受欢迎的企业资源规划(ERP)系统之一,拥有超过700万用户,为各种规模和类型的组织提供全面、灵活的集成业务解决方案。Odoo是由比利时公司Odoo S.A.开发的开源ERP平台,自2005年推出以来,已从简单的业务管理系统发展成为涵盖企…

    2025年12月13日 好文分享
    000

发表回复

登录后才能评论
关注微信