Skip to main content

A lightweight testing tool with test report functionality

Project description

xayah

A lightweight testing tool with test report functionality

Table of contents

General info

Xayah is used to test and generate report for python applications. It is built to combine a testing tool with test report functionality. It allows testing modules and generate a test report in JSON format

test suite example:

from xayah import TestSuite, TestResult

def add(a, b):
  return a + b

@TestSuite.init
class TestAdd:
  def test_add(self):
     assert add(2, 3) == 5

# generating a test report
TestAdd.run_test_cases()
report = TestResult().create_test_result()

Installation

Xayah is available on PyPI:

python -m pip install xayah

Documentation

Xayah's documentation can be found in readthedocs: https://xayah.readthedocs.io/en/latest/

Features

  • adding title, description, severity levels, etc.
  • test parametrization
  • steps
  • skipping tests
  • generating test report

Usage

In order to generate report, the test class should be decorated with TestSuite.init method:

@TestSuite.init
class CheckTestCase:
    def test_method(self):
        assert 1 == 1

then all test method (with test prefix) of the tested class can be executed by calling run_test_cases method:

CheckTestCase.run_test_cases()

in order to created test result TestResult().create_test_result() method should be called:

result = TestResult().create_test_result()

then test result can be parsed in any format

Telegram_bot_example

Originally, xayah was built as a test report tool for telegram bots.

Here you can see the simple usage in telegram bot with selenium:

from aiogram import Bot, Dispatcher, executor, types
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from xayah import TestResult, TestSuite, TestCase

API_TOKEN = 'BOT TOKEN HERE'

# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

@TestSuite.init
@TestSuite.title('Google main page')
class TestGoogle:
    @TestCase.title('page title is Google')
    def test_google(self):
        driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
        driver.get('https://www.google.com/')
        assert driver.title == 'Google', 'title is not google'


@dp.message_handler(commands=['test'])
async def test(message: types.Message):
    webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    TestGoogle.run_test_cases()
    result = TestResult().create_test_result()
    test_suite = result.get(TestGoogle.__name__)
    test_suite_title = test_suite.get('title')
    test_case = test_suite.get('test_cases')[0]
    test_case_title = test_case.get('title')
    test_case_status = test_case.get('status')
    text = f'<pre><b>{test_suite_title}:</b></pre>\n  <pre>{test_case_title} - {test_case_status}</pre>'
    await message.reply(text, parse_mode=types.ParseMode.HTML)
    
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

telegram bot's response:

Google main page:
  
page title is Google - passed

Future_work

Planned features:

  • Console application
  • Running xayah tests through console application
  • JSON generation
  • HTML page generation from the test report
  • PDF page generation from the test report
  • Integration with pytest
  • Making telegram bot integration easier

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

xayah-0.0.7.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

xayah-0.0.7-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file xayah-0.0.7.tar.gz.

File metadata

  • Download URL: xayah-0.0.7.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.27.1 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for xayah-0.0.7.tar.gz
Algorithm Hash digest
SHA256 64260627ed897930dc80f3ad52496a7782386465544683c711a70bd4801c2b77
MD5 218f5bf4217c2358eeb154790291f61a
BLAKE2b-256 36e947a553dedc35641dd8ed74820dc081c3827108adfb0067517c97ab61b60e

See more details on using hashes here.

File details

Details for the file xayah-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: xayah-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.27.1 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for xayah-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 8951cbe7fe23d6806d91537b5715af727c9a08840df1dd1fb1ab1faa57920ca9
MD5 5098bd2dc0507be8a7741678dea6f196
BLAKE2b-256 bb0760038c80bdcddd59a1f39119c0ac48c6be3076b393a419b0ef78ac65744d

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