Skip to main content

python-pytest-check_mk

Build Status

Plugin for py.test to test Check_MK checks.

Usage

The following example contains a test suite for the foobar check contained in the Check_MK installation (see share/doc/check_mk/skeleton_check). The check file needs to be named after its agent section, i.e. foobar.

Directory layout

├── agents
│   └── plugins
│       └── foobar_linux
├── checks
│   └── foobar
└── test
    └── test_foobar.py

Test agent

All executable files in the agents directory can be executed with the agents fixture:

def test_agent_plugin(agent):
    assert agents['plugins/foobar_linux'].run() == '<<<foobar>>>\nFOO BAR\n'

It is also possible to pass commandline arguments to the agent or agent plugin:

def test_fritzbox_agent(agents):
    assert '<<<fritz>>>' in agents['special/agent_fritzbox'].run('--timeout', '20', 'fritz.box')

Test check

Within a single test file one check file can be tested. The name of the check file is set with the test_for module-level variable.

from pytest_check_mk import OK, WARNING, CRITICAL, UNKNOWN


test_for = 'foobar'


sample_plugin_output = '''
<<<foobar>>>
FOO BAR
'''


def test_inventory(checks):
    assert checks['foobar'].inventory(sample_plugin_output) == []


def test_check(checks):
    item = None
    params = None
    assert checks['foobar'].check(item, params, sample_plugin_output) == (UNKNOWN, 'UNKNOWN - Check not implemented')


def test_settings(checks):
    assert checks['foobar'].service_description == 'FOOBAR'
    assert not checks['foobar'].has_perfdata

Test check with agent data

There is a sort of ‘ensure everything works together’ assertion. It calls both inventory and check function with a given agent output and checks that the return values match the expected format.

from pytest_check_mk.assertions import assert_inventory_and_check_works_with_check_output


test_for = 'foobar'


def test_check_with_agent_output(agent, checks):
    output = agents['plugins/foobar_linux'].run()
    assert_inventory_and_check_works_with_check_output(checks['foobar'], output)

License

This software is licensed under GPLv2.

Metadata

Release files for pytest-check-mk 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pytest-check-mk 0.1.1
File Interpreter ABI Platform
pytest_check_mk-0.1.1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Release files / pytest_check_mk-0.1.1-py2.py3-none-any.whl

Download URL pytest_check_mk-0.1.1-py2.py3-none-any.whl
Size 8.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e8fc09a79cb3129adef68edab20cf01a2ce22614a8a2cadb671e5b69aa281507
BLAKE2b-256 checksum
How to use checksums
2c5090765e135ff55a6ffad50309992d643d8e3c7307e8013469a20d6a33788b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page