mockを使って「関数が実行されないこと」をテストする
mockを使ってテスト書いてて、「関数が実行されたこと」をテストするのに、assert_called_withとかassert_called_once_withとかいろいろ用意されていて便利だった
で、「関数が実行されなかったこと」をテストするのはどうするのかと思って調べた。
例えばあるview関数のテストで、内部でsample_functionが呼ばれなかったことをテストするのは以下のように書けた。簡単。
# coding=utf-8 from django.test import TestCase, Client from mock import patch class SomeViewTest(TestCase): def setUp(self): super(SomeViewTest, self).setUp() self.client = Client() @patch('apps.views.sample_function') def test_some_view(self, sample_function): # viewを呼び出し self.client.get('/index') # sample_functionが実行されなかったことをテスト assert not sample_function.called
参考 : Mock - Mocking and Testing Library ― Mock 1.0.1 documentation
参考 : python - Assert a function/method was not called using Mock - Stack Overflow