|
|
|
|
|
by crackerjackmack
2838 days ago
|
|
In an example. NoopTelemetry would be some type of empty class not dependent on mock (I've used a meta class a singleton in this case, but whichever, could be a module just the same). To test, you'd pass in a mock object to telemetry and check that a both timer_start and timer_stop are both called with the correct function name. In your main or context, you setup your application with the needed pieces. def main():
context = {'telemetry': StatsClient(....)}
start(context)
def start(context):
algo_5(1, 4, context['telemetry'])
def algo_5(param1, param2, telemetry=NoopTelemetry):
telemetry.timer_start('algo_5')
ret = param1 / param2 ** param2 # whatever
telemetry.timer_stop('algo_5)
return ret
def test_start():
context = {'telemetry': MagicMock()}
start(context)
# more testing.
def test_algo5_math():
ret = algo5(4, 5)
assert 78 # maybe?
def test_algo5_telemetry():
mm = MagicMock()
algo5(1, 1, mm)
assert mm.timer_start.called_with_args(['algo5'])
assert mm.timer_stop.called_with_args(['algo5'])
|
|