問題タブ [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.
python - Haystack の可変長ニードル (Python)
アプリケーションの検索機能でエラーを検出するように設計された関数があります。これは、非制御 UTF-8 の可能性から可変長の検索文字列を生成します。この関数で pytest 反復を実行すると、ランダムな UTF-8 文字列が検索用に送信され、約 500 回の検索ごとにデバッグ エラーが生成されます。
エラーの原因となった各文字列を取得できるので、実際にエラーを引き起こす文字列の文字の最小のサブシリーズは何かを判断したいと思います。つまり、(pytest ループ内で):
文字列を半分にスライスして両側を削り、失敗するまで再送信し、その (len() - 1) からランダムな文字を選択してから、エラーが発生しない場合は元に戻す必要がありますか? ブルートフォースコンビナトリアル?これをステップスルーする最良の方法は何ですか?
ありがとう。
python - 単体テストで経過時間をアサーションとして使用する
メソッドが変更された場合に実行に X ミリ秒以上かからないようにしたいという状況に直面しています (基本的に、その関数が遅くなると、Web ページの検索結果が遅くなり、売り上げに悪影響)。
単体テストがあります (特に、コードは python で実行され、py.test を使用します)。最初のアイデアは、関数が X ミリ秒未満で実行されなかった場合、テストを失敗としてマークする (またはエラーを発生させる) ことをアサートすることです。警告)。
ただし、これは危険だと感じます (たとえば、すべてのコンピューターが同じ速度であるとは限りません)。また、それが単体テストの仕事であるかどうかもよくわかりません。
誰かが同様の状況に直面しましたか? 私にとって速度は機能であり、コードが進化するにつれて、そのような機能が将来失われないようにしたいと考えています。
単体テストが答えではない場合、他のどの代替手段をお勧めしますか?
ありがとう
python - pytestパラメータ化デコレータが**kwargsで機能しない
私のテストコードには、次のものがあります。
したがって、parameterize関数は、自分の@ae_test
デコレータによって返される関数をパラメータ化しようとします。これは次のようになります。
これはこれまでのすべてのテストで機能しましたが、parameterize関数は次のように不平を言っています。
このエラーは、638行目のpytest/python.pyで発生します
最初のコメントに応えて、完全なスタックトレースを次に示します。
しかし、問題は実際にはparameterize
、「タイトル」と呼ばれる引数を探して、それを見つけられないことに帰着します。これは、**kw構文を使用しているためです。私は、parameterize関数がそこにdictを入れることを期待しています。
python - ツイストWebリソースでreactor.callInThreadをテストできません
着信要求を処理し、キューで処理されるセロリタスクを送信するツイストWebリソースがあります。このセロリ呼び出しは、reactor.callInThreadを使用して処理されます。
このコードをユニットテストしたいのですが、reactor.callInThreadのコードが実行されないため、次のような単純なTestCaseは失敗します。
記録のために、私はhttp://findingscience.com/python/twisted/2012/02/20/testing-twisted-web-resources.htmlで説明されているアプローチを使用してWebリソースをテストしています
python - 相対コマンドが変更されたら、py.test を自動実行するにはどうすればよいですか?
autonose または nosy を介して、いくつかのテスト ファイルまたは関連ファイルが変更されると、nosetest が自動的に実行されます。py.test が同様の機能を提供するかどうか、他のツールで py.test を自動的に励起できるかどうかを尋ねたいと思います。
python - 生成されたテストを xfail/skip としてマークする方法は?
py.test を使用して、一部のテスト ケースが失敗すると予想されるテストを生成することがよくあります。それらを xfail としてマークするにはどうすればよいですか? テスト関数に置くと、@py.test.mark.xfail
そのすべてのインスタンスが xfail であることを意味します。テスト内で行うpy.test.xfail()
と、xfail としてマークするだけでなく、実際にテストに失敗します。このマーカーを追加するために metafunc でできることはありますか?
例えば
python - [py.test]:依存関係をテストします
私はpy.testを使用してテストシステムを作成しており、他のテスト実行結果に応じて特定のテストを実行する方法を探しています。
たとえば、標準のテストクラスがあります。
test_A()とtest_B()が渡された場合は、test_C()を実行する必要があります。それ以外の場合は、スキップされます。
テストまたはテストクラスレベルでこのようなことを行う方法が必要です(たとえば、すべてのTest_Smokeに合格した場合、Test_Perfoが実行されます)。標準のメソッド(@ pytest.mark.skipifなど)を使用して解決策を見つけることができません。
pytestで可能ですか?
python - 失敗した場合、クラスの残りのテストをスキップする方法は?
Jenkins、Python、Selenium2(webdriver)、および Py.test フレームワークを使用して、Web テストのテスト ケースを作成しています。
これまでのところ、次の構造でテストを整理しています。
各ClassはTest Caseで、各test_
MethodはTest Stepです。
このセットアップは、すべてが正常に機能している場合は非常にうまく機能しますが、1 つのステップがクラッシュすると、残りの「テスト ステップ」が狂ってしまいます。の助けを借りて、クラス (テスト ケース) 内に障害を封じ込めることができますがteardown_class()
、これを改善する方法を検討しています。
私が必要とtest_
しているのは、1 つのクラス内の残りのメソッドを何らかの方法でスキップ (または xfail) し、残りのテスト ケースが実行されず、FAILED としてマークされないようにすることです (それは誤検知になるため)。
ありがとう!
更新:「それは悪い習慣です」という答えは探していません。そのように呼ぶことは非常に議論の余地があるためです。(各テスト クラスは独立しています。これで十分です)。
UPDATE 2:各テストメソッドに「if」条件を入れることはオプションではありません-これは多くの繰り返し作業です。私が探しているのは、(おそらく) 誰かがクラス メソッドへのフックの使い方を知っていることです。
python - pytest2.3クラス内にティアダウンを追加する
私は新しいバージョンのpytest(2.3)を研究していて、あなたがいる新しい機能に非常に興奮しています
「元に戻す必要のあるアクションを実行するとすぐに、1つまたは複数のティアダウン関数を登録することで、ティアダウンを正確に制御できます。これにより、個別の「ティアダウン」デコレータが不要になります。」
ここから
関数として使用する場合はすべてかなり明確ですが、クラスでどのように使用するのですか?