Package: xayah
xayahA lightweight testing tool with test report functionalityTable of contentsGeneral infoInstallationFeaturesDocumentationUsageTelegram_bot_exampleFuture_workGeneral infoXayah 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 formattest 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()InstallationXayah is available on PyPI:python -m pip install xayahDocumentationXayah's documentation can be found in readthedocs:https://xayah.readthedocs.io/en/latest/Featuresadding title, description, severity levels, etc.test parametrizationstepsskipping testsgenerating test reportUsageIn order to generate report, the test class should be
decorated with TestSuite.init method:@TestSuite.init
class CheckTestCase:
    def test_method(self):
        assert 1 == 1then 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 formatTelegram_bot_exampleOriginally, 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 - passedFuture_workPlanned features:Console applicationRunning xayah tests through console applicationJSON generationHTML page generation from the test reportPDF page generation from the test reportIntegration with pytestMaking telegram bot integration easier