Skip to main content

A small package for UI testing in web applications.

Project description

UI Test Framework

Package for Testing Browser User interfaces.

Installation

  pip install uitestframework

You must also download the driver for your selected browser and place it in your working directory Drivers can be downloaded here.

Usage

The UI Test Framework provides a base for creating browser based UI tests by using the Page Object Model and selenium webdriver. You might find it most useful for testing web application in development in which the UI is continually being changed. Typical usage often looks like this:

from unittest import TestCase

from uitestframework import UITestCaseMixin, PageObjectModel
from uitestframework.pom import BasePage, BaseElement

APPLICATION_HOST = "https://localhost:8080"


class MyPage(BasePage):
    def set_elements(self):
        # adds a BaseElement instance "Button1" to MyPage
        button1 = BaseElement(name="Button1", locator="button_id", locator_type='id', page=self)
        return [button1]


class MyPOM(PageObjectModel):
    # Maps url paths to BasePage instance
    url_map = {
        '': MyPage,
    }


class MyTestCase(UITestCaseMixin, TestCase):
    # These are necessary attributes for this class
    driver_path = "chromedriver.exe"
    browser = 'chrome'
    pom = MyPOM()

    def test_foo(self):
        # tests that button 1 redirects you from the current page
        self.driver.get(APPLICATION_HOST)
        # Using the url map, the pom knows in which page to look for the specified element attribute
        # Several methods for interacting with UI are implemented in the BaseElement class and its Subclasses
        self.pom.button1.click()
        self.assertTrue(self.driver.current_url != APPLICATION_HOST)

To test pages which require user input. The FormPage class can be used. An example of usage is provided below::

#!/usr/bin/env python

from unittest import TestCase
from selenium.webdriver.common.by import By

from uitestframework import UITestCaseMixin, PageObjectModel
from uitestframework.pom import FormPage, FieldElement, BaseElement

APPLICATION_HOST = "https://localhost:8080"


class LoginPage(FormPage):

    def set_elements(self):
        username = FieldElement(name='username', locator="id_username", locator_type=By.ID, page=self)
        password = FieldElement(name='password', locator="id_password", locator_type=By.ID, page=self)
        submit = FieldElement(name='submit', locator="id_submit", locator_type=By.ID, page=self)
        error_message = BaseElement(name='error_message', locator="id_error", locator_type=By.ID, page=self)
        return [username, password, submit, error_message]


class MyApplicationPOM(PageObjectModel):
    url_map = {
        '/login': LoginPage,
    }


class MyTestCase(UITestCaseMixin, TestCase):
    driver_path = "chromedriver.exe"
    browser = 'chrome'
    pom = MyApplicationPOM()

    def test_login(self):
        login_url = APPLICATION_HOST + '/login'
        self.driver.get(login_url)
        self.pom.autofill(username='username', password='correct password')
        self.pom.submit.click()
        self.assertTrue(self.driver.current_url != login_url)

    def test_failed_login(self):
        login_url = APPLICATION_HOST + '/login'
        self.driver.get(login_url)
        self.pom.autofill(username='username', password='wrong password')
        self.pom.submit.click()
        self.assertTrue(self.pom.error_message.is_rendered())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uitestframework-0.0.2.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uitestframework-0.0.2-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file uitestframework-0.0.2.tar.gz.

File metadata

  • Download URL: uitestframework-0.0.2.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0

File hashes

Hashes for uitestframework-0.0.2.tar.gz
Algorithm Hash digest
SHA256 bc017fc37700b1324828cb52b44c7c8e80ad020c554e5a9fc9a677ba2473e277
MD5 7a504f20d871efb6608181dd5f5919b5
BLAKE2b-256 9b36218fc2ae7049b5683f53672efff95239476000a5f3916e924ecd2b284487

See more details on using hashes here.

File details

Details for the file uitestframework-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: uitestframework-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0

File hashes

Hashes for uitestframework-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 142107111d5af344f03d2f493fd30dd2e18c0a3b3c23f6eb0b5cebd3b5353c59
MD5 a17be89c4d9cb78f253633ae950af5b0
BLAKE2b-256 a6f4f4dbe4f036ef5de0f06257d5c032230ac294271c1b8d337014e03c8569db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page