私はこれを理解する時間がありました。本当に私を悩ませていたので、誰もが同じ問題に遭遇した場合...PyTestのフィクスチャをPyCharm(タイプヒント)でオートコンプリートする方法
(と答えは、それが問題の核心は時々、常に、PyTestに備品を扱うないときということです:-)
問題
痛いシンプルなので、一顧ですPyCharmのテストでこれらのフィクスチャを使用すると、オートコンプリートヒントは得られません。テストの作成中に多数のメソッドを参照したいオブジェクトがある場合、テスト書込みプロセスに多くのオーバーヘッドと不便さが加わります。
は、ここで問題を説明するために単純な例です:
のは、私が住んでいるクラス「event_manager」を持っているとしましょう:
location.game.events
レッツさらに(私のconftest.pyファイルでそれを言います不慣れなためPyTest標準のもの)、私は、そのクラスのインスタンスを返すの固定具持っている:私は、時々問題がありました(しかし常にではない
from location.game.events import event_manager
...
@pytest.fixture(scope="module")
def event_mgr():
"""Creates a new instance of event generate for use in tests"""
return event_manager()
を - )私はかなり理由を把握することはできませんこのようなクラスでは、フィクスチャを使用するテストコードでオートコンプリートが正しく機能しません。
def test_tc10657(self, evt_mgr):
"""Generates a Regmod and expects filemod to be searchable on server"""
evt_mgr.(This does not offer autocomplete hints when you type ".")
あなたはPyCharmタイプヒンティングを確認したら、そう答えは、実際には非常に簡単です: http://www.jetbrains.com/help/pycharm/2016.1/type-hinting-in-pycharm.html
ここでオートコンプリートが正しく動作するように、上記のテストコードを修正する方法は次のとおりです。
from location.game.events import event_manager
...
def test_tc10657(self, evt_mgr: event_manager):
"""Generates a Regmod and expects filemod to be searchable on server"""
evt_mgr.(This DOES offer hints when you type "." Yay!)
私がevent_manager型の入力パラメータとしてフィクスチャを明示的にどのようにタイプするかに注目してください。
2016.2現在、PyCharmはpytestに特有の多くの機能をほとんど知らないです。インスペクションでは、同じファイルに定義されているフィクスチャの名前をシャドーイングしたり、フィクスチャ名からオートコンプリートを作成したりすることはありません。提案に感謝します。 –
Python 2.7ではどうしたらいいですか?私はスタブファイルを使用して示唆jetbrains.comのリンクに従ってみましたが、私はそれを動作させるように見えることはできません。私の場合、私は 'セレンのインポートwebdriver'を行っています。私はPhantomJSブラウザを生成し、私の個別のテストでドライバオブジェクトの自動提案を得ることができません。 – bergonzzi
私は、テストのパラメータにタイプアノテーションなしでこれをどうやって行うのがポイントかと思います。これはまだ便利ですが、テストケースごとに繰り返す必要はありません。 – gbonetti