|
5 | 5 | import pytest |
6 | 6 |
|
7 | 7 | from qolmat.utils import data |
| 8 | +from pytest_mock.plugin import MockerFixture |
8 | 9 |
|
9 | 10 | columns = ["No", "year", "month", "day", "hour", "a", "b", "wd", "station"] |
10 | 11 | df = pd.DataFrame( |
|
30 | 31 |
|
31 | 32 |
|
32 | 33 | @pytest.mark.parametrize("name_data", ["Beijing", "Artificial", "Bug"]) |
33 | | -def test_utils_data_get_data(name_data: str) -> None: |
| 34 | +def test_utils_data_get_data(name_data: str, mocker: MockerFixture) -> None: |
| 35 | + mock_download = mocker.patch("qolmat.utils.data.download_data", return_value=[df]) |
| 36 | + mocker.patch("qolmat.utils.data.preprocess_data", return_value=df_preprocess) |
| 37 | + try: |
| 38 | + df_result = data.get_data(name_data=name_data) |
| 39 | + except ValueError: |
| 40 | + assert name_data not in ["Beijing", "Artificial"] |
| 41 | + np.testing.assert_raises(ValueError, data.get_data, name_data) |
| 42 | + return |
| 43 | + |
34 | 44 | if name_data == "Beijing": |
35 | | - df = data.get_data(name_data=name_data) |
36 | | - expected_columns = [ |
37 | | - "PM2.5", |
38 | | - "PM10", |
39 | | - "SO2", |
40 | | - "NO2", |
41 | | - "CO", |
42 | | - "O3", |
43 | | - "TEMP", |
44 | | - "PRES", |
45 | | - "DEWP", |
46 | | - "RAIN", |
47 | | - "WSPM", |
48 | | - ] |
49 | | - assert isinstance(df, pd.DataFrame) |
50 | | - assert df.columns.tolist() == expected_columns |
| 45 | + assert mock_download.call_count == 1 |
| 46 | + pd.testing.assert_frame_equal(df_result, df_preprocess) |
51 | 47 | elif name_data == "Artificial": |
52 | | - df = data.get_data(name_data=name_data) |
53 | 48 | expected_columns = ["signal", "X", "A", "E"] |
54 | | - assert isinstance(df, pd.DataFrame) |
55 | | - assert df.columns.tolist() == expected_columns |
| 49 | + assert isinstance(df_result, pd.DataFrame) |
| 50 | + assert df_result.columns.tolist() == expected_columns |
56 | 51 | else: |
57 | | - np.testing.assert_raises(ValueError, data.get_data, name_data) |
| 52 | + assert False |
58 | 53 |
|
59 | 54 |
|
60 | 55 | @pytest.mark.parametrize("df", [df]) |
|
0 commit comments