問題タブ [pytest]

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 投票する
7 に答える
126809 参照

python - pytest テスト内でのログ記録

いくつかの状態変数を調べるために、テスト関数内にいくつかのログ ステートメントを配置したいと思います。

次のコード スニペットがあります。

次の出力が得られます。

ブロックからのロギング メッセージのみが'__name__ == __main__'コンソールに送信されることに注意してください。

pytestテストメソッドからもログをコンソールに出力するように強制する方法はありますか?

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

python - stdlib ロギングを py.test と組み合わせるにはどうすればよいですか

私は py.test を使用して、かなりの量の stdlib ロギングを含む私のモジュールをテストしています。もちろん、テストが失敗した場合に関連するすべてのログメッセージを取得できるように、ログが py.test によってキャプチャされる stdout にログを記録することを望みます。

これに関する問題は、このオブジェクトが py.test によって破棄された後、ロギング モジュールが py.test によって提供される「stdout」オブジェクトにメッセージを記録しようとすることです。つまり、次のようになります。

でキャプチャをオフ-sにしても問題はありませんが、もちろん、無関係なロギングでテスト出力が読めなくなります。

stdlib ロギングを py.test と統合する適切な方法を教えてもらえますか?

(これを見てみましが、問題なく動作するはずなので、あまり役に立ちませんでした)

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

python - py.test 各テストの前にメソッドを実行する方法

Python での単体テストには unittest と noise を使用しましたが、現在は py.test を使用しています。testCase内のすべてのメソッドを実行する前に、
unittest と noise が常に呼び出されます。class.setUp

py.testでこれを行うにはどうすればよいですか?

編集:これを追加すると:

すべてのエラーが発生します:

EDIT2:わかりました、私はばかです。外部ではなく、TestCase の内部に配置する必要がありました。ありがとうございました。

0 投票する
2 に答える
9008 参照

python - Pythonでのpy.testテストの生成

最初に質問してから、興味があれば説明してください。

py.testのコンテキストで、テスト関数テンプレートの小さなセットからテスト関数の大きなセットを生成するにはどうすればよいですか?

何かのようなもの:

説明:

私が書いているコードは、モデル構造といくつかのデータを取り、モデルのパラメーターを学習します。したがって、私の単体テストは、一連のモデル構造と事前に生成されたデータセット、および各構造とデータで完了する約5つの機械学習タスクのセットで構成されます。

したがって、これを手動でコーディングする場合は、タスクごとにモデルごとに1つのテストが必要です。新しいモデルを思いつくたびに、5つのタスクをコピーして貼り付け、ポイントしているピクルス構造とデータを変更する必要があります。これは私には悪い習慣のように感じます。理想的には、5つのタスクのそれぞれを定義する5つのテンプレート関数を作成し、指定した構造のリストに対してテスト関数を吐き出すだけです。

グーグルで検索すると、a)工場またはb)閉鎖のいずれかになります。どちらも私の頭を悩ませ、適切なプログラマーが定期的にこの問題に直面する必要があるため、もっと簡単な方法があるはずだと私に示唆します。それでありますか?


編集:この問題を解決する方法は次のとおりです!

test_awesomeこれにより、モデルのリストにある各モデルにテストが適用されます。ありがとう@dfichter!

(注:そのアサートは常に通過します、ところで)

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

python - pytestを使用したPythonオブジェクトのユニットテスト

特定の条件を満たすオブジェクトのリストを返すメソッドがあります

find_objects()の動作を検証するためのpytestを作成したいと思います

これまでのところ、pytestは左山括弧(<)を指しており、「SyntaxError」を宣言しています。

これを機能させても、将来、「my_object」を別の場所に保存すると失敗するのではないかと思っています。複数のインスタンスがある場合、それらの正しい数が報告されたことをどのように確認できますか?

このコンテキストでは、オブジェクトを返すメソッドの出力を検証するためのpythonicの方法は何ですか?

js

0 投票する
2 に答える
2508 参照

python - py.test はカスタム funcargs で monkeypatch を使用します

私は py.test を使用しており、オブジェクトをテスト関数に挿入する funcarg アプローチが本当に気に入っています。私のテストでは、多くの外部依存関係があるため、モック オブジェクトを使用する必要があります。特定の属性をモック オブジェクトに置き換えるには、monkeypatch を使用します。

私が抱えている問題は、特定のファンカーグを使用し、常に同じ属性にパッチを適用する必要がある一連のテストで終わることが多いということです。これまでのところ、すべてのテスト関数の属性を置き換えました。

funcarg 関数で monkeypatch を使用し、この重複したコードを個々のテストから削除する方法はありますか?

0 投票する
13 に答える
126408 参照

python - py.testテストを実行するようにPyCharmを設定するにはどうすればよいですか?

Pythonコードの単体テストを書き始めたいのですが、py.testフレームワークは、Pythonにバンドルされている単体テストよりも優れているようです。そこで、プロジェクトに「tests」ディレクトリを追加し、それにtest_sample.pyを追加しました。ここで、「tests」ディレクトリ内のすべてのテストを実行するようにPyCharmを構成したいと思います。

PyCharmはテストランナーでpy.testをサポートしていると言われています。テストを実行するための実行/デバッグ構成を作成できるはずであり、PyCharmにはpy.test専用の「構成の作成」ダイアログボックスがあると言われています。しかし、それはこの主題に関する彼らの文書の完全な範囲であり、私はこの疑わしいダイアログボックスをどこにも見つけることができません。

プロジェクトツールウィンドウでディレクトリを右クリックすると、[ <名前>の作成]メニュー項目が表示されるはずですが、[作成]で始まるメニュー項目は[実行構成の作成]のみです。さて、おそらくドキュメントが間違っているだけで、「CreateRunConfiguration」は有望に聞こえます。残念ながら、そのサブメニューの2つの項目は、「Unittests in C:\ mypath ...」と「DoctestsinC:\ mypath ...」だけで、どちらも当てはまりません。私はunittestもdoctestも使用していません。py.testのメニュー項目はありません。

test_sample.pyを開いてエディターウィンドウを右クリックすると、約束された「Create<name>」メニュー項目が表示されます。「Create'Unittestsin test_sa ...' ...」に続いて、「Run 'Test_saのユニットテスト...'"および"デバッグ'test_saのユニットテスト...'"。繰り返しになりますが、これはすべてユニットテストフレームワークに固有のものです。py.testには何もありません。

「unittest」というメニュー項目を試してみると、「名前」、「タイプ」のオプションを含むダイアログボックス、「フォルダ」と「パターン」、「スクリプト」と「クラス」を含む「テスト」グループボックスが表示されます。 「」や「関数」など。これは、Python単体テストの構成を追加するためのダイアログとして文書化されているものとまったく同じように聞こえますが、表示されるはずの「名前」、「実行するテスト」、「キーワード」オプションとは異なります。 py.testダイアログの構成で。ダイアログ内には、追加するテストフレームワークを切り替えるものは何もありません。

私はPython3.1.3とpytest2.0.3を搭載したWindowsでPyCharm1.5.2を使用しています。コマンドラインからテストを正常に実行できるpy.testため、pytestが正しくインストールされていないような単純なものではありません。

py.testテストを実行するようにPyCharmを設定するにはどうすればよいですか?

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

python - LSF での Python 単体テストの実行

デフォルトの unittest モジュールを使用して作成した Python 単体テストを並列化する必要があります。私は2つのアプローチのどちらかを決定しようとしています:

  1. unittestを使用し続けますが、 Platform LSF (リモート実行ツール)を使用してテストを生成できるカスタム 'マルチプロセス' ランナーを使用します。例はTestOOBプロジェクトにあります。
  2. py.testを使用し、pytest-xdist プラグインをカスタマイズして、SSH の代わりに LSF を実行します。

私はすでに作業セットアップがあり、特にテスト スイートの生成 (Excel スプレッドシートを解析するジェネレーターを使用しており、自明ではありません) があるため、#1 に傾倒しています。

従うべき特定のアプローチに関する推奨事項はありますか?

注:私の会社は LSF を使用しており、他のチームとリソースを共有するために LSF を使用する必要があります。

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

python - py.test で実行されるジョブのセットアップとクリアはどのくらい一般的ですか?

Python のunittestunittest.TestCaseには、関連する関数をクラスにグループ化し、そのクラスの関数を継承して提供することにより、一般的なセットアップおよびクリア ジョブを実行する便利な方法がありsetUpますtearDown。ただし、py.testで同様のメカニズムを見つけることができませんでした。私は何が欠けていますか?