Skip to main content

Create pytest parametrize decorators from external files.

Project description

pytest-param-files

PyPI

A small package to generate parametrized pytests from external files.

Simply create a text file with an available format:

dot format (default):

[name1] description
.
input content
.
expected output content
.

[name2] description
.
input content
.
expected output content
.

yaml format:

name1:
  description: optional description
  input: |-
    input content
  expected: |-
    expected output content
name2:
  description: optional description
  input: |-
    input content
  expected: |-
    expected output content

Then, use the param_file pytest marker to create a parametrized test:

from pathlib import Path
import pytest

import my_function

PATH = Path(__file__).parent.joinpath("test_file.txt")

@pytest.mark.param_file(PATH, fmt="dot")
def test_function(file_params):
    assert my_function(file_params.content) == file_params.expected

and the output will be:

$ pytest -v test_file.py
...
test_file.py::test_function[1-name1] PASSED
test_file.py::test_function[8-name2] FAILED

Alternatively use the assert_expected method, which will can handle more rich assertion features:

@pytest.mark.param_file(PATH, fmt="dot")
def test_function(file_params):
    actual = my_function(file_params.content)
    assert file_params.assert_expected(actual, rstrip=True)
$ pytest -v test_file.py
...
test_file.py::test_function[1-name1] PASSED
test_file.py::test_function[8-name2] FAILED
...
E       AssertionError: Actual does not match expected
E       --- /path/to/test_file.txt:8
E       +++ (actual)
E       @@ -1 +1 @@
E       -content
E       +other

Installation

Install from PyPI:

$ pip install pytest-param-files

or install locally (for development):

$ pip install -e .

Regenerating expected output on failures

Running pytest with the --regen-file-failure option will regenerate the parameter file with actual output, if any test fails.

Other formats

TODO ...

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

pytest_param_files-0.6.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

pytest_param_files-0.6.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file pytest_param_files-0.6.0.tar.gz.

File metadata

  • Download URL: pytest_param_files-0.6.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for pytest_param_files-0.6.0.tar.gz
Algorithm Hash digest
SHA256 ab02608d63f7baf14483682ee6213c9330401f2a14d7a63489b872f6830a9848
MD5 cd9cc2b0c83e6d7bd98202459da2c884
BLAKE2b-256 f754023b260066b36cc8ebd42c52c7c65b94110c4a1abb08d0edf7eac71e21a5

See more details on using hashes here.

File details

Details for the file pytest_param_files-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_param_files-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d24095dbc98bdc1e1d8236c0e01237c8a3dc3e3e7742e0f552304c4073691251
MD5 c0ca8023f1c2e2347d8d3068869f1e20
BLAKE2b-256 460993188af48b8dcd7c615bf32c4e248fc096ea826ae0e9bfd3f65acc9de826

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page