問題タブ [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 投票する
1 に答える
1793 参照

python - pytest_generate_tests関数でfuncarg値を使用する

私はpy.testを初めて使用し、funargsを使用して、テストが実行される前にいくつかのテストデータを生成しています。pytest_generateフックにfuncargs値を使用させ、それをテスト関数に渡したいです。たとえば、データベースに特定の引数のセットを照会し、それに応じてユーザーの環境を設定する関数「do_something」があります。マルチサイト設定があることを考慮して、テストを実行する前に、データベースにテストの実行対象のエントリがあることを確認したいと思います。

理想的には。値を繰り返し処理して、テスト関数に渡します。どうやってやるの?

現在私はこれを行っています:

今、これは動作します。ただし、テストケースを追加するたびに、generate_testフックを更新する必要があります。私はこれを行うためのより簡単な方法があるかもしれないと思っていますか?

0 投票する
23 に答える
256414 参照

python - pytestのPATHの問題'ImportError:YadaYadaYadaという名前のモジュールがありません'

easy_installを使用してMacにpytestをインストールし、次のようなファイル構造を持つプロジェクトのテストを書き始めました。

リポジトリディレクトリで実行するpy.testと、すべてが期待どおりに動作します

しかし、LinuxまたはWindows(どちらもpytest 2.2.3を搭載)で同じことを試してみると、アプリケーションパスから何かを最初にインポートするたびに吠えます。たとえば言うfrom app import some_def_in_app

これらのシステムでpy.testを実行するには、PATHを編集する必要がありますか?誰かがこれを経験しましたか?

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

python - Python2 と Python3 を実行する py.test

Python2 と Python3 の両方で動作するパッケージ ( http://github.com/anntzer/parsedcmd ) を作成しました。ただし、Python2 と Python3 の単体テスト (py.test) を個別に作成する必要があったため (主に、Python3 の追加機能、特にキーワードのみの引数をテストしたいため)、サブパッケージに atest_py2.pyと atest_py3.pyがあります。testここで、たとえば を実行するとpy.test2 mypkgtest_py2合格しますが、 でtest_py3失敗しますSyntaxError。同様に、 forpy.test3 mypkgtest_py3合格しますがtest_py2失敗します (ただし、これを機能させることはできますが、これはStringIOに移動しただけの問題ですio)。

test適切なバージョンのテストのみをインポートするようにサブパッケージを設計できますimport mypkg.testが、明らかに py.test は気にしません.2つのファイルが一致していることを確認し、インポートするように指示するtest_*ものを無視して、両方のファイルのすべてのテストを取得します。__init__.py

だから今、私は と の両方をしなければなりませpy.test2 mypkg/test/test_py2.pypy.test3 mypkg/test/test_py3.py。すべてをセットアップして「うまくいく」ようpy.test2 mypkgにする方法はありますか?py.test3 mypkg

ありがとう。

0 投票する
4 に答える
4951 参照

python - 別のテストが py.test で失敗した場合、テストをスキップするにはどうすればよいですか?

これらのテスト機能があるとしましょう:

test_function_one がパスした場合にのみ test_function_two が実行されるようにするにはどうすればよいですか (それが可能であることを願っています)。

編集: テスト2がテスト1が検証するプロパティを使用しているため、これが必要です。

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

python - pytest 自動化は、テスト コレクション フェーズ中にテストを実行しているようです

pytest と selenium を使用して webui 自動テストを実行する。収集段階でテストが実際に実行されているように見える問題があります。このフェーズでは、pytest がテストを実行するのではなく、収集することを期待します。最終結果は、2 と予想されるところに 6 つのテスト結果が得られることです。ここで興味深いのは、6 つの結果が HTML レポートにのみ表示されることです。コマンドラインでは、予想される2行の出力しか得られません(ただし、テストは文字通り複数回実行されているため、これら2つのテストを実行するのに300秒かかります)。

tests/test_datadriven.py

データ/data.py

完全なソースは github で入手できます。https://github.com/eanxgeek/katello_challenge

ここで何が起こっているのか誰にも分かりますか?pytest-mozwebqa プラグイン、pytests、およびセレンを使用しています。

ありがとう!

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

python - pylint は py.test で不平を言います:「モジュール 'pytest' には 'raises' メンバーがありません」

次のコードを使用します。

その上で pylint を実行すると、「レイズ」がモジュール pytest のメンバーではないことを訴えます。

これは明らかに真実ではありません。なぜpylintがそのような間違いを犯しているのか、何か考えはありますか? これは既知のバグですか?

py.test バージョン:

PyLint バージョン:

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

python - 「アイテム」データと「レポート」データの両方を見つけることができる py.test コールアウトはどれですか?

pytest_runtest_makereport() は item と call の 2 つの引数を取得します。item から、このテスト用に作成した funcarg を見つけることができ、call から、例外情報 (存在する場合) を見つけることができます。

残念ながら、excinfo には失敗とスキップの両方が含まれています。区別するには、pytest_report_teststatus() のレポート引数を確認する必要があります。

これは素晴らしい情報ですが、テスト用に作成した funcarg と関連付けることはできません。レポートの引数 (TestReport レポート) を調べましたが、pytest_runtest_makereport() に渡されたアイテム、または作成した funcarg に戻る方法が見つかりません。

両方にアクセスできる場所はどこですか?

0 投票する
4 に答える
4169 参照

python - py.test の実行中に setup.py を収集中にエラーが発生しましたか?

py.testパッケージで実行しようとしていますがsetup.py、除外しようとしてもプロジェクトのルート ディレクトリから解析しようとしています。

テスト クラスはモジュールに含まれているため、*.py ファイルからテストを収集する必要があります。

それでも実行py.testすると、ERROR collecting setup.pyすでに除外したものが表示されます。

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

python - tox と py.test を使用してユニットテストをサポートされているプラ​​ットフォームに限定する方法は?

2.5から3.2までの幅広いpythonバージョンで実行、テスト、インストールしたい小さなpythonパッケージtendoがあります。

まだ 2.5 を実行しているマシンがあり、まだアップグレードできないため、2.5 のサポートが必要です。

現在、ユニットテストはモジュール内に含まれています。これにより、モジュールを変更したときにユニットテストを更新したり、実行したりするのが簡単になります。メインがテストを実行するからです。

一部のモジュールは、すべてのプラットフォームで使用できるわけではありません。

Tox はpy.testすべてのプラットフォームで実行するように構成されていますが、それでも の[pytest]セクションsetup.cfgはすべてのファイル内のテストを探すように構成されてい*.pyます。

これは問題をもたらします: これらのファイルのいくつかは実行することが想定されておらず、py25そのためにそれらを調整することは不可能です.

一部のプラットフォームでロードする (または除外する) モジュールを指定できる構成を探しています。

望ましい動作は、サポートされているすべてのバージョンの Python にこのパッケージをインストールできることです。(明らかに、スキップするモジュールはほとんどありません)。

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

python - pytestは「デフォルト」マーカーをサポートしていますか?

組み込みシステムのPythonモデルをテストするためにpytestを使用しています。テストする機能はプラットフォームによって異なります。(このコンテキストでは、OSタイプではなく、組み込みシステムタイプを意味するために「プラットフォーム」を使用しています)。

テストを整理する最も簡単な方法は、プラットフォームの種類に基づいてテストをディレクトリに割り当てることです。

pytest / platform1

多くの機能がプラットフォーム間で重複しているため、これはすぐにサポートが困難になりました。その後、テストを1つのディレクトリに移動し、各機能領域のテストを1つのファイル名(たとえば、test_functionalityA.py)に割り当てました。次に、pytestマーカーを使用して、ファイル内のどのテストが特定のプラットフォームに適用されるかを示します。

プラットフォームタイプを自動的に検出して適切なテストのみを実行するために「 conftest 」を取得したいのですが、コマンドラインで実行するテストを指定することに辞任しました。

pytest -m "(platform1またはall_platforms)"

質問:(ついに!)

物事を単純化し、pytestにデフォルトですべてのマークされていないテストを実行させ、さらにコマンドラインの「-m」を介してすべてのテストに合格させる方法はありますか?

例:pytest -m "platform1"

@ pytest.mark.platform1とマークされたテストだけでなく、@ pytest.mark.all_platformsとマークされたすべてのテスト、または@ pytest.markがまったくないすべてのテストを実行しますか?

共有機能が大量にあることを考えると、@pytest.mark.all_platforms行を削除できることは大きな助けになります。