0

私は Django 1.3 を使用しており、ロギング システムで出力と対話の数を確認する必要があります。ロギングには Django-Sentry を使用していますが、通常の Python ロガーと同じように機能しているようです。

私はモックに python-mockito を使用しています。可能であれば、さまざまなメソッドが呼び出された回数とそれらが返すメッセージを確認したいと思います。

私は次のようなチェックを達成しようとしています:

from foo import views
logger = mock()
views.logger = logger
do_method()
verify(logger).error(any, any)
do_method()
verifyZeroInteractions(logger)

また、パラメーターを確認できると便利です。

models.py:

from django.db import models
import logging
from sentry.client.handlers import SentryHandler

logger = logging.getLogger(__name__)

try:
    is_logging_setup = True
except NameError:
    is_logging_setup = True
    logger.setLevel(settings.LOGGING_LEVEL)
    logger.addHandler(SentryHandler())

class Foo(models.Model):
    def bar(self):
        logger.warning("Rawr", 'extra': { 'data': 'foo' })

tests.py:

class TestModelFoo(TestCase):
    def setUp(self):
        self.foo = Foo()

    def test_getting_logged(self):
        self.foo.bar()
        # Check the log output.

出力をキャッチする方法について何か提案はありますか?

4

1 に答える 1

0

mock以下は、標準のpython ライブラリを使用してそれを行うコードです。

    with mock.patch('infra.manifest.fake_put') as fake_patch:
        infra.manifest.copy_files(root, files, folder, True)

    args, kwargs = fake_patch.call_args

    self.assertEqual((u'/etc/a.tmp', u'/tmp/a.tmp'), args)
    self.assertEqual({'use_sudo': True}, kwargs)

興味のあるmock.patchメソッドです。元のメソッドも呼び出すキーワードを指定できるフレームワークは他にもあると思います。passthroughこれは、パッチを適用したメソッドをモック呼び出しに変え、元のメソッドを呼び出さないものです。

于 2011-09-26T02:09:35.460 に答える