pytest-funparam makes it easy to write parametrized tests.
Installation
You can install “pytest-funparam” via pip from PyPI:
$ pip install pytest-funparam
Usage
Inside a test function, decorate a function with the funparam fixture:
def test_addition(funparam):
@funparam
def verify_sum(a, b, expected):
assert a + b == expected
verify_sum(1, 2, 3)
verify_sum(2, 2, 5) # OOPS!
verify_sum(4, 2, 6)
And run pytest:
$ pytest
============================= test session starts ==============================
collected 3 items
test_readme.py .F. [100%]
=================================== FAILURES ===================================
_______________________________ test_addition[1] _______________________________
def test_addition(funparam):
@funparam
def verify_sum(a, b, expected):
assert a + b == expected
verify_sum(1, 2, 3)
> verify_sum(2, 2, 5) # OOPS!
test_readme.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = 2, b = 2, expected = 5
@funparam
def verify_sum(a, b, expected):
> assert a + b == expected
E assert (2 + 2) == 5
test_readme.py:4: AssertionError
========================= 1 failed, 2 passed in 0.03s ==========================
The test_addition test case was split into 3 tests, one for each verify_sum call.
Because funparam is parametrizing the test calls, it even works with commands like pytest --last-failed:
$ pytest --last-failed
============================= test session starts ==============================
collected 1 item
test_readme.py F [100%]
=================================== FAILURES ===================================
_______________________________ test_addition[1] _______________________________
def test_addition(funparam):
@funparam
def verify_sum(a, b, expected):
assert a + b == expected
verify_sum(1, 2, 3)
> verify_sum(2, 2, 5) # OOPS!
test_readme.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = 2, b = 2, expected = 5
@funparam
def verify_sum(a, b, expected):
> assert a + b == expected
E assert (2 + 2) == 5
test_readme.py:4: AssertionError
============================== 1 failed in 0.01s ===============================
Mark tests by using the _marks keyword argument on calls to verify:
import pytest
def test_addition(funparam):
@funparam
def verify_sum(a, b, expected):
assert a + b == expected
verify_sum(1, 2, 3)
verify_sum(2, 2, 5, _marks=pytest.mark.skip)
verify_sum(4, 2, 6)
$ pytest ============================= test session starts ============================== collected 3 items test_readme.py .s. [100%] ========================= 2 passed, 1 skipped in 0.01s =========================
Note that the _marks keyword argument is passed through directly to the marks keyword argument of pytest.mark.param(). This means the value can be either a single mark or a collection of marks.
Similarly, add an id to a test using the _id keyword argument:
def test_addition(funparam):
@funparam
def verify_sum(a, b, expected):
assert a + b == expected
verify_sum(1, 2, 3, _id="one and two")
verify_sum(2, 2, 5, _id="two and two")
verify_sum(4, 2, 6, _id="four and two")
$ pytest --collect-only ============================= test session starts ============================== collected 3 items <Module test_readme.py> <Function test_addition[one and two]> <Function test_addition[two and two]> <Function test_addition[four and two]> ========================== 3 tests collected in 0.01s ==========================
License
Distributed under the terms of the MIT license, “pytest-funparam” is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest-funparam-0.2.0.tar.gz.
File metadata
- Download URL: pytest-funparam-0.2.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fc31813b2d3edc1216e807a8c51e1fe732b6accf650416b845513d78e2d2939
|
|
| MD5 |
fa15661f42a38fb3b9ffa5a848cb4f94
|
|
| BLAKE2b-256 |
8d42d2b18cbf8f818d60a906fd30f76de9eb05a98c21fafdffd43007b8b21d5c
|
File details
Details for the file pytest_funparam-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pytest_funparam-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee3e31dadb7dca4ecc394c3a828a5e704fbbc9ab30fca6ec4e1fc6eb65528a05
|
|
| MD5 |
b41e47e6057996ef930a1565fd30e114
|
|
| BLAKE2b-256 |
5456e03b5a77883e702937779f89a3863b853885ef4dacf9f646af697eb96be4
|