6

私はDjangoプロジェクトに取り組んでいますが、これは純粋なPythonのunittest質問だと思います。

通常、テストを実行すると、例外がテストランナーによってキャッチされ、それに応じて処理されます。

デバッグの目的で、この動作を無効にします。つまり、次のようにします。

python -i manage.py test

通常どおり、例外が発生するとインタラクティブなPythonシェルに侵入します。

どうやってするか?

編集:これまでの回答に基づくと、これは私が思っていたよりもDjango固有の質問のようです!

4

3 に答える 3

4

django-noseテストランナーを使用できます。これはテストで機能しunittest、のようにテストを実行しますpython manage.py test -v2 --pdb。そして、noseはあなたのためにpdbを実行します。

于 2012-08-31T01:00:45.653 に答える
3

新しいアプリdjango-pdbはこれをより良くし、通常のコードでテストの失敗やキャッチされない例外を壊すためのモードをサポートします。

于 2012-08-31T04:19:18.240 に答える
0

パッケージ内のモジュールで次のようなことを試してから、コードでCondCatches(例外を使用できます。)

# System Imports
import os

class NoSuchException(Exception):
    """ Null Exception will not match any exception."""
    pass

def CondCatches(conditional, *args):
    """
    Depending on conditional either returns the arguments or NoSuchException.

    Use this to check have a caught exception that is suppressed some of the
    time. e.g.:
    from DisableableExcept import CondCatches
    import os
    try:
        # Something like:
        print "Do something bad!"
        print 23/0
    except CondCatches(os.getenv('DEBUG'), Exception), e:
        #handle the exception in non DEBUG
        print 'Somthing has a problem!', e
    """
    if conditional:
        return (NoSuchException, )
    else:
        return args

if __name__ == '__main__':
    # Do SOMETHING if file is called on it's own.
    try:
        print 'To Suppress Catching this exception set DEBUG=anything'
        print 1 / 0
    except CondCatches(os.getenv('DEBUG'), ValueError, ZeroDivisionError), e:
        print "Caught Exception", e
于 2014-02-26T14:06:33.713 に答える