Skip to content

Instantly share code, notes, and snippets.

@asgillmor
Last active March 6, 2019 11:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save asgillmor/971165e0a9f36ffe0c42a5e9ba0569fb to your computer and use it in GitHub Desktop.
Save asgillmor/971165e0a9f36ffe0c42a5e9ba0569fb to your computer and use it in GitHub Desktop.
Heavily mocked tests are a code smell
@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