from datetime import date from unittest.mock import MagicMock import pytest from conftest import patch_import with patch_import(): from steps.mixins import CSVMixin @pytest.mark.parametrize( "lines, expected_result", ( (["id\tvalue", "1\tsome_value"], [{"id": 1, "value": "some_value"}]), (["id\tvalue", '1\t"1.#QNAN"'], [{"id": 1, "value": None}]), (["id\tvalue", '1\t"[]"'], [{"id": 1, "value": []}]), (["id\tvalue", '1\t"[1]"'], [{"id": 1, "value": [1]}]), (["id\tvalue", '1\t"[1, 2, 3]"'], [{"id": 1, "value": [1, 2, 3]}]), (["id\tvalue", '1\t"[""2022-09-28""]"'], [{"id": 1, "value": [date(2022, 9, 28)]}]), ( ["id\tvalue", '1\t"[""2022-09-28"", ""2022-09-29"", ""2022-09-30""]"'], [{"id": 1, "value": [date(2022, 9, 28), date(2022, 9, 29), date(2022, 9, 30)]}], ), ), ) def test_read_csv(lines, expected_result): csv = CSVMixin() csv.perf_counter = MagicMock() assert list(csv.read_csv(lines)) == expected_result