pytestで単一ファイルをテストする方法


88

pytestで単一のファイルをどのようにテストしますか?ドキュメントには無視オプションしかなく、「このファイルのみをテストする」オプションはありませんでした。

setup.cfgideでさまざまなファイルテストを実行したいので、これはの代わりにコマンドラインで機能することが望ましいです。スイート全体に時間がかかりすぎます。

回答:


94

pytestファイルへのパスで実行するだけです

何かのようなもの

pytest tests/unit/some_test_file.py


3
わかりました、これはpycharmが行っていることのようですが、それでもスイート全体を実行しています。コマンドラインでpy.testを実行すると、何らかの理由でセグメンテーション違反が発生します。これは元の質問の範囲外だと思うので、うまくいくことができればあなたの答えを受け入れます。
simonzack 2016年

3
どうやらaddoptssetup.cfgで、パスがそこに追加された場合に問題が発生しているようです。
simonzack 2016年

1
@simonzackファイルに存在する複数のテストケースから単一のテストケースを実行したいと思います。これを試してください:py.test test_basic.py -k test_first here test_firstは、私のtest_basic.pyファイルにあるテストケースです。
アヌラグシンハ2017

73

これは非常に簡単です。

$ pytest -v /path/to/test_file.py

-vフラグは、冗長性を高めることです。そのファイル内で特定のテストを実行する場合:

$ pytest -v /path/to/test_file.py::test_name

パターンに続く名前のテストを実行する場合は、次を使用できます。

$ pytest -v -k "pattern_one or pattern_two" /path/to/test_file.py

テストにマークを付けるオプションもあるので、-mフラグを使用してマークされたテストのサブセットを実行できます。

test_file.py

def test_number_one():
    """Docstring"""
    assert 1 == 1


@pytest.mark.run_these_please
def test_number_two():
    """Docstring"""
    assert [1] == [1]

マークの付いたテストを実行するにはrun_these_please

$ pytest -v -m run_these_please /path/to/test_file.py

2
の場合path/to/test.py::test_method、エラーが発生しました>エラー:見つかりません:/home/namgivu/NN/code/myproject/tests/models/test_bill.py :: test_generate_for_today_normal_cycle(名前なし '/ home / namgivu / NN / code / myproject / tests / models /test_bill.py::test_generate_for_today_normal_cycle 'のいずれか[<Module'tests / models / test_bill.py'>])
Nam G VU

1
IDを使用したパラメーター化されたテストはどうですか?-k my_test[a test id here]動作せず、これまでに管理した中で最高の-k "my_test and a and test and id and here"形式は、ほとんど使いやすい形式ではありません。
ポールDスミス

1
この例に示されている例(特に、1つの混合パスとノード選択構文)は、IMOのように実際には明らかではないため、pytestのドキュメントに追加する必要があります。
cjauvin

12

これは私のために働いた:

python -m pytest -k some_test_file.py

これは、個々のテスト機能でも機能します。

python -m pytest -k test_about_something

これpytest directory_to_tests/some_test_file.pyは私にはうまくいきません。私は3.8.2と6.0.1 pytestのpythonの窓によ
はMinghua
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.