py.test
PyCharm では、デフォルトのテスト ランナーとしてセットアップします。
私は簡単なテストケースを持っています:
import unittest
import time
def my_function():
time.sleep(0.42)
class MyTestCase(unittest.TestCase):
def test_something(self):
my_function()
ここで、ファイルを右クリックしてProfile 'py.test in test_profile.py'
.
コンソールでテストが正常に実行されていることを確認します (と表示されますcollected 1 items
)。ただし、Statistics/Call Graph
生成された pstat ファイルを表示するビューは空で、Nothing to show
.
test_something
とのプロファイリング情報が表示されることを期待していますmy_function
。私は何を間違っていますか?
編集 1 : ファイルの名前を で始まらないものに変更しtest_
、 を削除してを呼び出すメソッドをunittest.TestCase
挿入すると、最終的に py.test なしで cProfile を実行でき、結果が表示されます。__main__
my_function
ただし、私は大量のテストを含む大規模なプロジェクトに取り組んでいます。追加のプロファイリング スクリプトを作成する代わりに、これらのテストを直接プロファイリングしたいと考えています。py.test
プロジェクトのすべてのテストを再帰的に取得できるように、テスト検出モジュールを呼び出す方法はありますか? (unittest
によって認識されないジェネレーター関数で多くのパラメーター化されたテストを生成するため、発見は十分ではありませんunittest
)。このようにして、少なくとも 1 つのスクリプトを追加するだけで問題を解決できました。