問題タブ [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.

0 投票する
1 に答える
434 参照

python - Pythonテストでの長い文字列出力の比較中にエラーが発生しました

私は、実行の結果として大量のバイトを(文字列として)スローするPythonスクリプトをテストしています。

まず、次の結果が得られます。

これで、スクリプトを実行して出力を取得します。

次に、この結果を非常に長い予想出力と比較します。

(これはばかげたテストです。私は物事を機能させることを試みています)。

問題:テストが失敗します。デバッグ私は値が等しいことを発見しました。

誰か助けてもらえますか?

ありがとう!

0 投票する
1 に答える
823 参照

eclipse - PyUnit出力をEclipseのファイルにリダイレクトする

EclipseにPyUnitの出力をファイルにリダイレクトする(〜レポートを保存する)組み込みの方法はありますか?

0 投票する
0 に答える
151 参照

django - Django 単体テストはプロジェクト全体で失敗しますが、アプリ全体で合格します

Ubuntu 12.10でPython 2.7でDjango 1.4を使用しています。

いくつかのアプリと数十の単体テストを含むプロジェクトがあります。@override_settings最近、デコレータを使用して小さな問題に遭遇しました。

ここにいくつかのコードがあります:

テストがアプリ レベルで実行されると、すべてが成功します。

しかし、プロジェクト レベルで実行すると失敗します。

some stuffを使用しているため失敗していますが、実際のを使用し/test/mediaているモデル メソッドです。offer.get_contect_dict()/mediaMEDIA_URL

MEDIA_URLファイル内の を変更することはできsettings/test.pyますが、それにはすべてのテストを使用する必要があります/test/media(とにかく良い考えかもしれません)。

明らかに問題は Djangoにあります。テスト スイートcore.files.storage.FileSystemStorage.__init__()の初期値を設定しbase_urlますが、(明らかな理由で) 各テストの後にオブジェクトを再インスタンス化しないため、@override_settings実際には何もしません。

これはバグですか、それとも意図したとおりに機能していますか? to に定数を/test/media設定して、すべての単体テストを強制的に使用する以外のエレガントなソリューションへの提案はありますか?MEDIA_URLsettings/test.py/test/media

0 投票する
1 に答える
1284 参照

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 コアにテストできないコードがあることを意味しますか?

0 投票する
1 に答える
737 参照

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

0 投票する
1 に答える
119 参照

python - 5つが渡されたときにメソッドが4つの引数しか受け入れないため、pyunitテストは失敗しました

ここに私がテストしている関数の定義があります:

ここに私のテストクラスがあります

これが私のエラーです:

私は何を間違っていますか?暗黙の 5 番目の引数はありますか? セルフですか?

0 投票する
1 に答える
2460 参照

python - PyUnit-ある入力に対して無限ループに陥るメソッドをユニットテストする方法は?

2011年の投稿は、NUnitに関するこの質問に答えまし た。ある入力に対して無限ループに陥るメソッドをユニットテストするにはどうすればよいですか?

同じ方法で使用できる同様のTimeoutAttributeがPyUnitにありますか?

検索して「Duration」を見つけましたが、同じではないようです。

0 投票する
5 に答える
17773 参照

python - 特定のログメッセージがDjangoテストケースに記録されているかどうかをテストするにはどうすればよいですか?

コード内の特定の条件により、ログメッセージがdjangoログに書き込まれるようにしたいです。Djangoユニットテストフレームワークでこれをどのように行うのですか?

送信メールを確認するのと同じように、ログに記録されたメッセージを確認できる場所はありますか?私の単体テストは拡張されdjango.test.TestCaseます。

0 投票する
3 に答える
2367 参照

python - OS/モジュールレベルのPython関数を呼び出すPythonユニットテストコード

私はこれらのいくつかを行うPythonモジュール/スクリプトを持っています

  1. スクリプト内のさまざまなネストされたレベルで、コマンドライン入力を受け取り、それらを検証し、適切なデフォルトを適用します
  2. また、いくつかのディレクトリが存在するかどうかを確認します

上記はほんの2つの例です。私はこれをテストするための最良の「戦略」を見つけようとしています。私が行ったことは、モジュールの周囲raw_inputos.path.existsモジュール内にラッパー関数を作成し、テストでこれら2つの関数をオーバーライドして、配列リストから入力を取得するか、モック動作を実行することです。このアプローチには、次の欠点があります。

  1. ラッパー関数はテストのためだけに存在し、これはコードを汚染します
  2. os.path.existsまたはを呼び出すだけでなく、コードでラッパー関数を毎回使用することを忘れないでください。raw_input

素晴らしい提案はありますか?