
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
pytest-report-stream
Advanced tools
.. -- mode: rst; coding: utf-8 --
.. image:: https://img.shields.io/pypi/v/pytest-report-stream.svg :target: https://pypi.org/project/pytest-report-stream :alt: PyPI version
.. image:: https://img.shields.io/pypi/pyversions/pytest-report-stream.svg :target: https://pypi.org/project/pytest-report-stream :alt: Python versions
:Authors: Christos Liontos :Version: 0.1.0 :Date: 2023-09-22 :Download: https://pypi.python.org/pypi/pytest-report-stream#downloads :Code: https://github.com/kolitiri/pytest-report-stream
pytest-report-stream is a pytest plugin which allows to stream test reports at runtime.
It is a simple plugin the leverages pytest's build-in hook pytest_runtest_makereport <https://docs.pytest.org/en/7.1.x/reference/reference.html#pytest.hookspec.pytest_runtest_makereport>
_ to intercept test execution and publish the status of the test run.
The plugin produces report events at specific moments:
The report structure looks like the dictionary below:
.. code-block:: python3
{
"test_run_tag": "My first test framework",
"test_run_id": "5e080accaee748dc80619ee99245124e",
"timestamps": {
"started": datetime.datetime(2023, 10, 22, 17, 4, 43, 161646),
"duration": 0.002042,
"finished": datetime.datetime(2023, 10, 22, 17, 4, 43, 163688),
},
"summary": {"passed": 1, "failed": 1, "status": "in-progress"},
"results": {
"tests/test_module1": {
"test_func_1": {
"name": "test_func_1",
"description": "Docstrings of function 1",
"status": "passed",
"error": "None",
},
"test_func_2": {
"name": "test_func_2",
"description": "Docstrings of function 2",
"status": "failed",
"error": "None",
}
}
},
}
The pytest-report-stream
plugin can be particularly useful while running large and long lasting integration testing suites using pytest.
The plugin can be used to stream live report events to a remote service, allowing to monitor the progress and the status of the tests.
For example, Jenkins and other CI/CD tools are great, but there might be a requirement to aggregate test results from multiple builds.
Install the plugin as below.
.. code-block:: sh
pip install pytest-report-stream
The plugin is available after installation and can be enabled using the --stream-reports
flag.
.. code-block:: sh
pytest --stream-reports
The plugin is using a report_client: ReportClient
instance to generate the reports.
A default report_client is used to log the reports in STDOUT. (Note that in order to view the reports in STDOUT you will need to run pytest
with the flag -s
)
The default client can be overriden in your own pytest_configure
with an implementation of the abstract pytest_report_stream::ReportClient
class.
.. code-block:: python3
# content of tests/test_my_module.py
def test_sync():
pass
.. code-block:: python3
# content of tests/test_my_module.py
import pytest
@pytest.mark.asyncio
async def test_async():
pass
.. code-block:: python3
# content of tests/conftest.py
import pytest
from pytest_report_stream import ReportClient, ReportStreamPlugin
class myCustomReportClient(ReportClient):
async def publish_report(self, report_msg: dict) -> None:
print('Some log comming from my custom report client')
def pytest_configure(config):
if config.option.stream_reports:
config._stream_reports = ReportStreamPlugin(
report_client=myCustomReportClient()
)
config.pluginmanager.register(config._stream_reports)
.. code-block:: python3
# content of tests/test_my_module.py
import pytest
@pytest.mark.asyncio
async def test_async():
pass
You can implement the publish_report
function and do pretty much anything, such as publishing the events to a message broker.
Contributions are very welcome.
Tests can be run with tox <https://tox.wiki/en>
_, please ensure
the coverage at least stays the same before you submit a pull request.
.. code-block:: sh
tox
Distributed under the terms of the MIT license, "pytest-report-stream" is free and open source software
If you encounter any problems, please file an issue <https://github.com/kolitiri/pytest-report-stream/issues>
_ along with a detailed description.
FAQs
A pytest plugin which allows to stream test reports at runtime
We found that pytest-report-stream demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.