問題タブ [python-unittest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonテストでの長い文字列出力の比較中にエラーが発生しました
私は、実行の結果として大量のバイトを(文字列として)スローするPythonスクリプトをテストしています。
まず、次の結果が得られます。
これで、スクリプトを実行して出力を取得します。
次に、この結果を非常に長い予想出力と比較します。
(これはばかげたテストです。私は物事を機能させることを試みています)。
問題:テストが失敗します。デバッグ私は値が等しいことを発見しました。
誰か助けてもらえますか?
ありがとう!
eclipse - PyUnit出力をEclipseのファイルにリダイレクトする
EclipseにPyUnitの出力をファイルにリダイレクトする(〜レポートを保存する)組み込みの方法はありますか?
django - Django 単体テストはプロジェクト全体で失敗しますが、アプリ全体で合格します
Ubuntu 12.10でPython 2.7でDjango 1.4を使用しています。
いくつかのアプリと数十の単体テストを含むプロジェクトがあります。@override_settings
最近、デコレータを使用して小さな問題に遭遇しました。
ここにいくつかのコードがあります:
テストがアプリ レベルで実行されると、すべてが成功します。
しかし、プロジェクト レベルで実行すると失敗します。
some stuff
を使用しているため失敗していますが、実際のを使用し/test/media
ているモデル メソッドです。offer.get_contect_dict()
/media
MEDIA_URL
MEDIA_URL
ファイル内の を変更することはできsettings/test.py
ますが、それにはすべてのテストを使用する必要があります/test/media
(とにかく良い考えかもしれません)。
明らかに問題は Djangoにあります。テスト スイートcore.files.storage.FileSystemStorage.__init__()
の初期値を設定しbase_url
ますが、(明らかな理由で) 各テストの後にオブジェクトを再インスタンス化しないため、@override_settings
実際には何もしません。
これはバグですか、それとも意図したとおりに機能していますか? to に定数を/test/media
設定して、すべての単体テストを強制的に使用する以外のエレガントなソリューションへの提案はありますか?MEDIA_URL
settings/test.py
/test/media
python - Django で完全なテスト スイートを実行すると、MessageMiddleware が見つからないというエラーが表示されます
私のアプリはabcappと呼ばれています。Python 2.7 で Django 1.5b1 を実行しています。django の最新のトランク リリースでも同じ問題が発生します。
manage.py test abcapp
私が書いたすべてのテストを実行すると、合格します。
実行するmanage.py test
と、一連の失敗が発生します。これらの失敗の最初のものを示します。
テスト結果は次のとおりです。
メッセージに反して、django.contrib.messages.middleware.MessageMiddleware
私はMIDDLEWARE_CLASSES
. my の値MIDDLEWARE_CLASSES
は以下です。アプリ内で問題なくメッセージを使用しています。
誰でもこの問題に光を当てることができますか? 私は自分のテストしか実行できませんが、適切な品質管理を確保するためにスイート全体を実行したいと考えています。
調査結果: 私自身のテストを通じて、テスト用の http クライアントを使用すると、ミドルウェアがまったく読み込まれないことに気付きました。これは、テスト クライアントで Web リクエストを介して独自のミドルウェアをテストしようとしたときに発見されました。その場合、これは djanog コアにテストできないコードがあることを意味しますか?
python - すべてのスレッドが確実に結合されるように thread.join を使用する場合の Pydev PyUnit の問題
テストがハングし続ける場所をテストするために pydev を使用しているときに問題が発生しています。私は問題を掘り下げ、根本的な原因が何であるかを知っています。問題の再現に使用できるコードのサンプルを以下に示します。
私は主にCentos 6.3、python 2.7、eclipse juno、pydev 2.7.1でテストしていますが、同様の設定のWindows 7でも問題が発生します。
サーバーのさまざまなスレッドのプロセスランチャーとして動作するpythonスクリプトがあります(すべてサードパーティのライブラリ内にあるため、システムのその側を辞任することはできません)。
process.py の最後ですべてのスレッドが終了していることを確認するために、終了する前にすべてのスレッドに参加しようとするコードのセクションがあります。
これは、通常の製品コードでは正常に機能します。
この問題は、pydev を使用して Eclipse で PyUnit でテストを実行するときに発生します。Python に余分なスレッドが追加されているため、テストがハングします。
Run As -> Python Run を使用してプログラムを起動すると、コードは期待どおりに実行され、正常に終了します。Run As -> Python unit-test を使用してプログラムを起動すると、テストが常にハングします。
利用可能なスレッドを見ると、問題が明らかになります。提供されたテスト コード サンプルを使用すると、Python 実行としてテストを実行するだけで、次のスレッドが表示されることがわかります (予想どおり)。
テストを単体テストとして実行するとき
Python によって追加された余分なスレッドは、このコードを壊しているようです。コードが ServerComm または pydev.Writer に参加しようとすると、ハングします。
これらのスレッドに名前で参加しないように試みることができることはわかっていますが、そのようにして、これに対処するために製品コードを変更していますが、その解決策にはあまり熱心ではありません。他の誰かがこれに遭遇し、良い回避策を見つけましたか? これで何か助けていただければ幸いです。以下は、問題のサンプル コードです。
サンプルtest_process.py
サンプルProcess.py
python - 5つが渡されたときにメソッドが4つの引数しか受け入れないため、pyunitテストは失敗しました
ここに私がテストしている関数の定義があります:
ここに私のテストクラスがあります
これが私のエラーです:
私は何を間違っていますか?暗黙の 5 番目の引数はありますか? セルフですか?
python - PyUnit-ある入力に対して無限ループに陥るメソッドをユニットテストする方法は?
2011年の投稿は、NUnitに関するこの質問に答えまし た。ある入力に対して無限ループに陥るメソッドをユニットテストするにはどうすればよいですか?
同じ方法で使用できる同様のTimeoutAttributeがPyUnitにありますか?
検索して「Duration」を見つけましたが、同じではないようです。
python - 特定のログメッセージがDjangoテストケースに記録されているかどうかをテストするにはどうすればよいですか?
コード内の特定の条件により、ログメッセージがdjangoログに書き込まれるようにしたいです。Djangoユニットテストフレームワークでこれをどのように行うのですか?
送信メールを確認するのと同じように、ログに記録されたメッセージを確認できる場所はありますか?私の単体テストは拡張されdjango.test.TestCase
ます。
python - OS/モジュールレベルのPython関数を呼び出すPythonユニットテストコード
私はこれらのいくつかを行うPythonモジュール/スクリプトを持っています
- スクリプト内のさまざまなネストされたレベルで、コマンドライン入力を受け取り、それらを検証し、適切なデフォルトを適用します
- また、いくつかのディレクトリが存在するかどうかを確認します
上記はほんの2つの例です。私はこれをテストするための最良の「戦略」を見つけようとしています。私が行ったことは、モジュールの周囲raw_input
とos.path.exists
モジュール内にラッパー関数を作成し、テストでこれら2つの関数をオーバーライドして、配列リストから入力を取得するか、モック動作を実行することです。このアプローチには、次の欠点があります。
- ラッパー関数はテストのためだけに存在し、これはコードを汚染します
os.path.exists
またはを呼び出すだけでなく、コードでラッパー関数を毎回使用することを忘れないでください。raw_input
素晴らしい提案はありますか?