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


162

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

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

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

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

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

WindowsでPython 3.1.3およびpytest 2.0.3を使用してPyCharm 1.5.2を使用しています。py.testコマンドラインからテストを正常に実行できるため、pytestが適切にインストールされていないなど、単純なことではありません。

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

回答:


228

ファイルに移動してください| 設定| ツール| Python統合ツールを使用して、デフォルトのテストランナーをpy.testに変更します。次に、ユニットテストの代わりにテストを作成するpy.testオプションを取得します。


ハァッ!どのようにそれを逃したのか分からない。ただし、機能するのは半分だけです。プロジェクトツールウィンドウでフォルダーを右クリックすると、py.testsではなくdoctestを作成するオプションが表示されます。(バグレポートを作成します。)ただし、エディターで右クリックし、 "Script:"をディレクトリ名に変更しても機能します。
ジョーホワイト

3
また、ソースディレクトリを「ソースルート」としてマークすることを忘れないでください。jetbrains.com
Inti

1
これをモジュールごとではなくプロジェクト全体(またはすべてのプロジェクト)に設定する方法はありますか?
OrangeDog

1
それが表示されますFile | Settings | Tools | Python Integrated Tools。5. PyCharmでのデフォルト設定ではなく、プロジェクトの設定でのみ使用可能です
killthrush

2
設定したら、実際にどのようにテストを実行しますか?
クリスアンダーソン

51

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools- py.testとして選択しDefault test runnerます。
  2. Djangoを使用している場合Preference -> Languages&Frameworks -> Django-チェックをオンにしますDo not use Django Test runner
  3. 以前に存在していたすべてのテスト構成をからクリアしRun/Debug configurationます。そうでない場合、テストはそれらの古い構成で実行されます。
  4. いくつかのデフォルトの追加引数を設定するには、py.testのデフォルト設定を更新します。 Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments

2
PyCharm 2017.3.2では、py.testをデフォルトとして設定した後でも、[プロジェクト]パネルでプロジェクトを右クリックしてを選択するNew => Python Fileと、Kind:ドロップダウンに表示されるのは、Pythonファイル、単体テスト、Pythonスタブであり、Pytestではありません。上記のスレッドで言及されているすべての場所を調べました。何が欠けていますか?
トムベイカー

Pythonファイル、単体テスト、Pythonスタブ-これらはpythonファイルであり、いくつかの事前定義されたデータが含まれています。独自のデータを追加できます。このトピックを読みくださいjetbrains.com/help/pycharm/…。しかし、これはpy.testテストの実行には影響しません。Pythonファイルだけを作成すれば機能します。このトピックでは、この機能jetbrains.com/help/pycharm/running-tests.html を構成してpy.testを実行する方法について説明します。
Sergey Kubrak、2018年

最新のPyCharmでは、「デフォルト」は「テンプレート」と呼ばれます
AgDude

19

ツールバーの「実行/デバッグ構成」項目を使用する必要があると思います。それをクリックし、「構成の編集」(または、メニュー項目「実行」->「構成の編集」を使用)をクリックします。左側のペインの「デフォルト」セクションには、「py.test」という項目があります。

また、マニュアルがUIと一致していないこともわかりました。私が問題を正しく理解し、それが役に立てば幸いです。


4
「デフォルト> py.test」ページでは、実際に構成を作成する方法がありませんでした。しかし、[構成の編集]ダイアログに移動し、[+]ツールバーボタンをクリックして[py.test]を選択し、[作業ディレクトリ]にテストを含むディレクトリを設定すると、テストを実行する構成が作成されます。したがって、プログラムの役立つ部分を私に示すための+1。ただし、デフォルトのpy.testへの変更がより良い解決策であると思うので、@ yoleに受け入れられた回答を提供します。これにより、現在のファイルだけを実行できるようになります。
ジョーホワイト

@JoeWhite参考になったので、回答として追加してください
Hariom Singh 2017

[構成の編集]ウィンドウでは、私のpytest構成を選択した後、私はまた、選択しなければならなかったTargetことScript athと、フォルダ私のテストのルートを指すように
RAbraham

それはなど、コマンドライン引数を渡すように、他の機能を開きますので、これは非常に良い方法です
チラグナーヤカ

13

pytest 3.7.2(pip経由でインストール)とpycharmsで動作させる方法は2017.3次のとおりです。

  1. に行く edit configurations

  1. 新しい実行構成を追加して選択 py.test

  1. 実行構成の詳細では、target= pythonとその下の名前のないフィールドをに設定する必要がありますtests。これはテストフォルダの名前のようです。タフすぎるとは思いません。また-s、テストをデバッグする場合にコンソールが正しく動作するように、この引数をお勧めします。引数を指定しないと、pytestは出力をキャプチャし、デバッグコンソールにバグを生じさせます。

  1. 私のtestsフォルダはそのように見えます。これは、プロジェクト(my_project/tests)のルートのすぐ下にあります。

  1. 私のfoobar_test.pyファイル:(インポートは必要ありません):
def test_foobar():
    print( "hello pytest")
    真を主張する
  1. 通常の実行コマンドで実行します


現在のファイルからテストのみを実行する可能性はありますか?私は他のファイルを開くたびに構成設定でファイル名を変更する必要があることに
気づきました

@algot頭の上ではわかりません。これを見てください:jetbrains.com/help/pycharm/performing-tests.htmlとこれ:jetbrains.com/pycharm/guide/tips/run-single-test
Benjamin Crouzier

5

確かに文書化は不十分です。デフォルトから新しい設定を追加したら、「/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py」スクリプトを実行する領域にいます。文書化されておらず、コマンドライン引数についての独自のアイデアがあります。

あなたはできる:

  1. 遊んでみて、スクリプトを逆にして、どうにかしてpy.testに引数を受け入れさせることができるかどうか確かめてください。うまくいくかもしれません。それは私にとって前半ではありませんでした。
  2. コンソールから「py.test * .py」を実行するだけです。

奇妙なことに、JetBrainsは独自のページでGoogleアルゴリズムを爆撃するのに優れているので、議論を見つけるのは難しいでしょう。


3

同じ質問に出てこのスレッドを見つけ、pycharm version:2017.1.2ソリューションを見つけました。「設定」->「ツール」->「Python統合ツール」に移動し、右側のパネルからデフォルトのテストランナーをpy.testとして設定します。私の問題を解決する


動作しますが、プロジェクトウィンドウでテストスクリプトファイル名を右クリックする必要があります。代わりに、同じテストスクリプトのファイルエディター領域を右クリックしても、残念ながら古いデフォルトツール(Unittests)が表示されます。テストする個々の関数を指定できないので、これは面倒です。
Hongyu Zhang

3

pycharm 2019.2では、これを行うだけですべてのテストを実行できます:

  1. 実行>構成の編集> pytestの追加
  2. 次のスクリーンショットに示すようにオプションを設定します 構成のスクリーンショット
  3. [デバッグ]をクリックします(または、ホットキーShift + Alt + F9などを使用してpytestを実行します)

pytestのpycharmへの高度な統合については、https: //www.jetbrains.com/help/pycharm/pytest.htmlを参照してください


2

2018.2を使用しています

実行->構成の編集...を実行してから、モーダルダイアログの左上にある+をクリックします。「python tests」を選択-> py.test次に、「All test with py.test」のような名前を付けます

[ターゲット:モジュール名]を選択し、テストがあるモジュール(つまり、「テスト」)か、テストがコードと混在している場合はすべてのコードがあるモジュールを配置します。これは私をつまずかせていました。

Pythonインタープリターを設定しました。

作業ディレクトリをプロジェクトディレクトリに設定しました。


0

py.testのpipインストールと、Specsアドイン(オプション--spec)の使用を含む特別なConda pythonセットアップで(素敵なテストサマリー言語のようなRspecの場合)、実行する必要がありました。

1.デフォルトのpy.testを編集してoption = --specを含めます。これは、プラグインを使用することを意味します:https : //github.com/pchomik/pytest-spec

2. py.testを使用して、新しいテスト構成を作成します。〜/ anaconda / envs /を使用するようにpythonインタープリターを変更します。たとえば、私の名前にはpy27を使用します。

3.「unittests」テスト構成を削除します。

4.デフォルトのテスト設定はpy.testで、素敵なRspecスタイルの出力があります。大好きです!みんなありがとう!

run / debug configsに関するps Jetbrainsのドキュメントはこちらです:https ://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test


0

2018.3では、pytestを使用していることを自動的に検出しているように見えますが、これはすばらしいことですが、プロジェクトのトップレベルから実行することはできません。私はpytestそれぞれのために走らなければなりませんでしたtestsディレクトリ個別。

しかし、構成の1つを選択し、それを手動で編集してプロジェクトのルートで実行できること、そしてこれが機能することがわかりました。[構成]ドロップダウンで手動で選択する必要があります。[プロジェクト]ペインのルートフォルダーを右クリックできません。しかし、少なくとも、一度にすべてのテストを実行できます。


0

プロジェクトでPytestを有効にする

  1. 設定/環境設定を開く| ツール| テストフレームワークの選択で説明されているPython統合ツール設定ダイアログ。
  2. ではデフォルトのテストランナーフィールドを選択pytestを
  3. [OK]をクリックして設定を保存します。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.