Skip to content

Latest commit

 

History

History
154 lines (126 loc) · 4.49 KB

File metadata and controls

154 lines (126 loc) · 4.49 KB

Logo

Python Mobile Automation Framework

Badge   Badge   Badge   Badge  

OverviewFramework StackDocumentationDemo

📑 Menu

📜 Overview

A python mobile test framework for Android and iOS utilizing Appium, Selenium, Pytest and the latest tech available in January 2023.

🏭 Framework Stack

framework stack

📚 Features

  • Utilizing Page Object Model
  • Integrated Allure reporting
  • Attach screenshots to Allure before every click or input field change
  • Attach a screenshot to Allure on test failure
  • Capability to post the test results to Slack
  • Capability to post the test results to TestRail
  • Capability to retry failed cases
  • Customizable console and file logger

📘 Documentation

❗ Prerequisites

  • Python 3
  • Pycharm
  • PIP
  • Appium 2
  • Selenium 4
  • Android Emulator
  • iOS Simulator

🎑 Design Patterns

Page Object Model: A structure where every page of the application is represented with a class that contains the elements for that page with the methods for interacting with these elements. When the UI of the app changes the tests themselves don’t need to change, only the page object class should be updated. The advantages of POM:

  • Easier code maintenance
  • Code reusability
  • Improved readability and reliability

💾 Dependencies

  • Appium-Python-Client
  • selenium
  • pytest
  • pytest-parallel
  • pytest-xdist
  • pytest-rerunfailures
  • pytest-html
  • pytest-metadata
  • requests
  • allure-pytest
  • python-dotenv
  • pytest-testrail

📂 Directory Tree

/Users/zsnagy/Repos/MobileTestFramework
├── apps
│   ├── demoApp.apk
│   └── demoApp.zip
├── framework
│   ├── __init__.py
│   └── core
│       ├── __init__.py
│       ├── page_base.py
│       └── test_base.py
├── pages
│   ├── __init__.py
│   ├── android
│   │   ├── __init__.py
│   │   ├── page_home.py
│   │   ├── page_sign_in.py
│   │   └── page_validation.py
│   └── ios
│       ├── __init__.py
│       ├── page_home.py
│       ├── page_sign_in.py
│       └── page_validation.py
├── tests
│   ├── __init__.py
│   ├── android
│   │   ├── __init__.py
│   │   ├── test_home.py
│   │   ├── test_sign_in.py
│   │   └── test_validation.py
│   └── ios
│       ├── __init__.py
│       ├── test_home.py
│       ├── test_sign_in.py
│       └── test_validation.py
├── utils
│   ├── __init__.py
│   ├── listeners
│   │   ├── __init__.py
│   │   └── event_listener.py
│   └── slack
│       ├── __init__.py
│       └── slack_notification.py
├── conftest.py
├── pytest.ini
├── requirements.txt
├── README.md
└── testrail.cfg

📀 Demo

  • After the configuration is adjusted in conftest.py, a test run can be initiated from the PyCharm

test_run

  • Allure report

allure_1 allure_2

  • Slack notification

slack_notification