search
HomeBackend DevelopmentPython TutorialPage Transactions as a new way to organize your testing automation

Page Transactions as a new way to organize your testing automation Photo by Mateus Campos Felipe

The vibrant scarlet ibis ( Eudocimus ruber ), also known as the red ibis, is a striking member of the Threskiornithidae bird family. This tropical avian species graces the landscapes of South America and parts of the Caribbean. While its form mirrors that of other ibis species, its brilliant scarlet plumage sets it apart. A symbol of national pride, it's one of Trinidad and Tobago's two national birds, and its Tupi-Guarani name, "guará," is even incorporated into the names of several Brazilian coastal municipalities.

Guará: A Python Implementation of the Page Transactions Pattern

Guará, a Python library, embodies the Page Transactions design pattern. It's less a tool and more a flexible programming paradigm applicable to various automation drivers beyond Selenium, encompassing Linux, Windows, and mobile automation.

The core aim of this pattern is to streamline test automation. Drawing inspiration from Page Objects, App Actions, and Screenplay, Guará centers on user actions (transactions) within an application—actions like logging in, logging out, or submitting forms.

This approach enhances the readability, maintainability, and adaptability of automation test code without requiring new tools or complex abstractions. A key advantage is its driver-agnostic nature; testers aren't locked into using Selenium. Guará seamlessly integrates with Helium, Dogtail, PRA Python, Playwright, or any preferred driver. No additional plugins or specialized knowledge are needed.

To reiterate: Guará is a Python implementation of the Page Transactions design pattern, prioritizing the pattern over being a standalone tool.

Guará utilizes the Command Pattern (GoF) to bundle user interactions (button presses, text input) into transactions. While termed a framework, it's not a new tool.

Instead of focusing on individual UI elements, Guará emphasizes the user's journey. The complexity is encapsulated within transactions, resulting in test statements that read like natural language. Testers can also create and integrate custom assertions.

Guará in Action: A Language Switching Example

This example showcases a user switching languages on a webpage:

from selenium import webdriver
from guara.transaction import Application
from guara import it, setup
import home

def test_language_switch():
    app = Application(webdriver.Chrome())

    # Open the application
    app.at(setup.OpenApp, url="https://example.com/")

    # Change language and assert
    app.at(home.ChangeToPortuguese).asserts(it.IsEqualTo, "Conteúdo em Português")
    app.at(home.ChangeToEnglish).asserts(it.IsEqualTo, "Content in English")

    # Close the application
    app.at(setup.CloseApp)

Each transaction resides in its own class (e.g., ChangeToPortuguese), extending AbstractTransaction. Testers simply override the do method; Guará handles the rest.

from guara.transaction import AbstractTransaction

class 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

Post-test logs display transactions and assertions:

<code>test_demo.py::test_language_switch 
2025-01-24 21:07:10 INFO Transaction: setup.OpenApp
2025-01-24 21:07:10 INFO  url: https://example.com/
2025-01-24 21:07:14 INFO Transaction: home.ChangeToPortuguese
2025-01-24 21:07:14 INFO Assertion: IsEqualTo
2025-01-24 21:07:14 INFO  Actual Data: Conteúdo em Português
2025-01-24 21:07:14 INFO  Expected: Conteúdo em Português
2025-01-24 21:07:14 INFO Transaction: home.ChangeToEnglish
2025-01-24 21:07:14 INFO Assertion: IsEqualTo
2025-01-24 21:07:14 INFO  Actual Data: Content in English
2025-01-24 21:07:14 INFO  Expected: Content in English
2025-01-24 21:07:14 INFO Transaction: setup.CloseApp</code>

Fixtures (setup/teardown) manage test initialization and completion. Standard testing tools like pytest or unittesting are fully compatible.

Benefits of Using Guará

  • Improved Code Reusability: Each class represents a complete user transaction.
  • Enhanced Readability: Code resembles plain English, facilitating collaboration.
  • Customizable Assertions: Create and share custom assertions.
  • Driver Agnosticism: Works with various automation tools beyond Selenium.
  • Versatile Application: Automates REST APIs, unit tests, desktop, and mobile tests.

Getting Started with Guará

  1. Install: pip install guara
  2. Create transactions using AbstractTransaction.
  3. Use Application, at, and asserts to invoke transactions.
  4. Run tests with detailed logging using Pytest: python -m pytest -o log_cli=1 --log-cli-level=INFO

Conclusion

Guará offers a fresh approach to test code organization, prioritizing readability, maintainability, and driver independence. It fosters collaboration and allows for the creation and sharing of custom assertions. Give Guará a try!

The above is the detailed content of Page Transactions as a new way to organize your testing automation. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python vs. C  : Applications and Use Cases ComparedPython vs. C : Applications and Use Cases ComparedApr 12, 2025 am 12:01 AM

Python is suitable for data science, web development and automation tasks, while C is suitable for system programming, game development and embedded systems. Python is known for its simplicity and powerful ecosystem, while C is known for its high performance and underlying control capabilities.

The 2-Hour Python Plan: A Realistic ApproachThe 2-Hour Python Plan: A Realistic ApproachApr 11, 2025 am 12:04 AM

You can learn basic programming concepts and skills of Python within 2 hours. 1. Learn variables and data types, 2. Master control flow (conditional statements and loops), 3. Understand the definition and use of functions, 4. Quickly get started with Python programming through simple examples and code snippets.

Python: Exploring Its Primary ApplicationsPython: Exploring Its Primary ApplicationsApr 10, 2025 am 09:41 AM

Python is widely used in the fields of web development, data science, machine learning, automation and scripting. 1) In web development, Django and Flask frameworks simplify the development process. 2) In the fields of data science and machine learning, NumPy, Pandas, Scikit-learn and TensorFlow libraries provide strong support. 3) In terms of automation and scripting, Python is suitable for tasks such as automated testing and system management.

How Much Python Can You Learn in 2 Hours?How Much Python Can You Learn in 2 Hours?Apr 09, 2025 pm 04:33 PM

You can learn the basics of Python within two hours. 1. Learn variables and data types, 2. Master control structures such as if statements and loops, 3. Understand the definition and use of functions. These will help you start writing simple Python programs.

How to teach computer novice programming basics in project and problem-driven methods within 10 hours?How to teach computer novice programming basics in project and problem-driven methods within 10 hours?Apr 02, 2025 am 07:18 AM

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How to avoid being detected by the browser when using Fiddler Everywhere for man-in-the-middle reading?How to avoid being detected by the browser when using Fiddler Everywhere for man-in-the-middle reading?Apr 02, 2025 am 07:15 AM

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

What should I do if the '__builtin__' module is not found when loading the Pickle file in Python 3.6?What should I do if the '__builtin__' module is not found when loading the Pickle file in Python 3.6?Apr 02, 2025 am 07:12 AM

Error loading Pickle file in Python 3.6 environment: ModuleNotFoundError:Nomodulenamed...

How to improve the accuracy of jieba word segmentation in scenic spot comment analysis?How to improve the accuracy of jieba word segmentation in scenic spot comment analysis?Apr 02, 2025 am 07:09 AM

How to solve the problem of Jieba word segmentation in scenic spot comment analysis? When we are conducting scenic spot comments and analysis, we often use the jieba word segmentation tool to process the text...

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.