Last active
March 6, 2019 11:37
-
-
Save asgillmor/971165e0a9f36ffe0c42a5e9ba0569fb to your computer and use it in GitHub Desktop.
Heavily mocked tests are a code smell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@pytest.fixture | |
def mock_spark_session(): | |
return mock.Mock(name='spark_session') | |
def test_get_user_latest_device_df(mock_spark_session): | |
mock_raw_dataframe = mock.MagicMock(name='fake_dataframe') | |
mock_spark_session.read.json.return_value = mock_raw_dataframe | |
mock_user_device_df = mock.Mock(name='mock_user_device') | |
mock_raw_dataframe.select.return_value = mock_user_device_df | |
fake_s3_path = 's3://foobar' | |
user_latest_device_df = get_user_latest_device_df( | |
mock_spark_session, fake_s3_path) | |
mock_spark_session.read.json.assert_called_once_with(fake_s3_path) | |
mock_raw_dataframe.select.assert_called_once_with( | |
mock_raw_dataframe['device_id'], | |
mock_raw_dataframe['enc_user_id'], | |
mock_raw_dataframe['arrival_date'].cast('date') | |
) | |
mock_user_device_df.createOrReplaceTempView.assert_called_once_with( | |
'user_device' | |
) | |
mock_spark_session.sql.assert_called_once_with( | |
mock.ANY | |
) | |
assert user_latest_device_df == mock_spark_session.sql.return_value |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment