pytest-csv-params/tests/test_complex_example.py

59 lines
1.9 KiB
Python

"""
Example Code for a test case for the `README.md` documentation
==============================================================
**Module:** ``tests.test_complex_example``
This module contains a quite simple, yet complex configured test to show what's possible with the plugin.
The example uses this CSV data, as found under ``tests/assets/example.csv``:
.. literalinclude:: ../../../tests/assets/example.csv
:language: text
The test idea here is much the same as the :mod:`tests.test_blog_example` test case.
Why is such a test case here? That's simple: To make sure, the code samples in the documentation still work as designed.
"""
from math import ceil
from os.path import dirname, join
from pytest_csv_params.decorator import csv_params
@csv_params(
data_file="example.csv",
base_dir=join(dirname(__file__), "assets"),
id_col="Test ID",
header_renames={
"Bananas shipped": "bananas_shipped",
"Single Banana Weight": "banana_weight",
"Apples shipped": "apples_shipped",
"Single Apple Weight": "apple_weight",
"Container Size": "container_size",
},
data_casts={
"bananas_shipped": int,
"banana_weight": float,
"apples_shipped": int,
"apple_weight": float,
"container_size": int,
},
)
def test_container_size_is_big_enough(
bananas_shipped: int, banana_weight: float, apples_shipped: int, apple_weight: float, container_size: int
) -> None:
"""
This is just an example test case for the documentation.
:param bananas_shipped: How many mananas were shipped?
:param banana_weight: What's the weight of one banana?
:param apples_shipped: How many apples where shipped?
:param apple_weight: What's the weight of one apple?
:param container_size: How large was the container?
"""
gross_weight = (banana_weight * bananas_shipped) + (apple_weight * apples_shipped)
assert ceil(gross_weight) <= container_size