Source code for message_ix_models.tests.testing.test_check

import logging
from typing import TYPE_CHECKING

import pandas as pd
import pytest

from message_ix_models.testing.check import NoDuplicates

if TYPE_CHECKING:
    from message_ix_models.types import ParameterData


[docs] class TestNoDuplicates:
[docs] @pytest.fixture def data(self) -> "ParameterData": """Test data with duplicated rows.""" duplicated = pd.DataFrame( [ ["x1", "y1", 1.0], ["x1", "y1", 2.0], ], columns=["x", "y", "value"], ) return dict(input=pd.DataFrame(), output=duplicated)
def test_run(self, caplog: pytest.LogCaptureFixture, data: "ParameterData") -> None: instance = NoDuplicates() with caplog.at_level(logging.DEBUG, NoDuplicates.__module__): result = instance.run(data) # Return values from the check are as expected assert False is result[0] assert """No duplicate indices in parameter data in 1/2 parameters FAIL: 1 parameters 'output': 1 duplicated keys:""" == result[1] # Log messages contain further details assert " x y value\n1 x1 y1 2.0" == caplog.messages[0]