Metadata-Version: 2.1
Name: pytest-pyreport
Version: 1.6.0
Summary: PyReport is a lightweight reporting plugin for Pytest that provides concise HTML report
Home-page: https://github.com/ToghrulMirzayev/pytest-pyreport
Author: Toghrul Mirzayev
Author-email: togrul.mirzoev@gmail.com
License: MIT
Keywords: pytest_pyreport,python,pytest,report,slack,telegram,messenger,pyreport
Classifier: Framework :: Pytest
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Jinja2
Requires-Dist: pytest
Requires-Dist: matplotlib
Requires-Dist: requests
Requires-Dist: logstyle

# PyReport

![PyPI - Downloads](https://img.shields.io/pypi/dm/pytest-pyreport)

# Quick overview
PyReport is a lightweight reporting plugin for Pytest that provides concise HTML reports by parsing JunitXML test results

# Pre-requisites
To be able to use this plugin you will need below dependencies that will be installed automatically with PyReport:
* Python >=3.7
* Jinja2
* Pytest
* matplotlib
* requests
* logstyle

# Supported Messengers
* Telegram <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Telegram_2019_Logo.svg/512px-Telegram_2019_Logo.svg.png?20231105064641" alt="Telegram" width="30" height="30">
* Slack <img src="https://raw.githubusercontent.com/devicons/devicon/55609aa5bd817ff167afce0d965585c92040787a/icons/slack/slack-original.svg" alt="Slack" width="30" height="30">

# Getting started
## Installation
To start using PyReport please follow below instructions:

* Install `pytest-pyreport` plugin:
```
pip install pytest-pyreport==<version>
```

## Report generation
* Run tests using below command to generate pyreport.html file with test results:
    ```
    pytest --junitxml=result.xml -o junit_family="xunit1" --pyreport
    ```
---
* Run tests using below command if you want to send Telegram notification <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Telegram_2019_Logo.svg/512px-Telegram_2019_Logo.svg.png?20231105064641" alt="Telegram" width="30" height="30">
    ```
    pytest --junitxml=result.xml -o junit_family="xunit1" --pyreport --telegram-pyreport <chat id> <bot token>
    ```
  * Prerequisites:
    * You need your own Telegram bot, which can be easily created using Telegram instructions.
  You can take the “chat ID” and “bot token” from there.
---
* Run tests using below command if you want to send Slack notification <img src="https://raw.githubusercontent.com/devicons/devicon/55609aa5bd817ff167afce0d965585c92040787a/icons/slack/slack-original.svg" alt="Slack" width="30" height="30">
    ```
    pytest --junitxml=result.xml -o junit_family="xunit1" --pyreport --slack-pyreport <webhook url> <channel id> <bot token>
    ```
  * Prerequisites:
    * You need your own Slack bot, which can be easily created using Slack instructions.
  You can take the “webhook url”, "channel id" and “bot token” from there.
---
* Run tests using below command if you want to check generated report on the server if it is available:
  ```
  pytest --junitxml=result.xml -o junit_family="xunit1" --pyreport --telegram-pyreport <chat id> <bot token> --server <URL>
  pytest --junitxml=result.xml -o junit_family="xunit1" --pyreport --slack-pyreport <webhook url> <channel id> <bot token> --server <URL>
  ```
  * Prerequisites:
    * You need to run server beforehand. As an example using CI/CD tools like Jenkins or GitHub Actions

---
* Run tests with failed tests counter. By running below command you will get JSON file with percentage of failed tests:
  ```
   pytest --junitxml=result.xml -o junit_family="xunit1" --pyreport --failed-tests-count
  ```
  * Fail percentage formula:
  ```text
  Failed Tests Percentage = (Number of Failed Tests / Total Number of Tests) * 100
                          = (10 / 100) * 100
                          = 10%
  ```
  * Example `fail_percentage.json`:
  ```json
  {"fail_count": 10, "fail_percentage": 10.0}
  ```
 

## Test results
* Once test run completed you should see `pyreport.html` file that auto generated by using above commands. \
Open it and check the test results as shown in below presentation



## Presentation
![pyreport](https://toghrulmirzayev.github.io/pytest-pyreport/presentation.gif)
