pytestで`PytestCollectionWarning`が発生する理由を教えてください
環境
- python 3.6.6
- pytest 4.5.0
背景
pytestでテストコードを書いています。フォルダ構成は以下の通りです。
tests/
- test_api.py
- utils_for_test.py
utils_for_test.pyにはテストコードはありません。以下のクラスが存在します。
class TestWrapper:
"""
テスト用のUtils
"""
def __init__(self, api):
self.api = api
質問
以下のコマンドでpytestを実行したら、以下の警告が発生しました。
pipenv run pytest tests -v --cov=src --cov-report=html
=============================================================================================== warnings summary ================================================================================================
tests/utils_for_test.py:23
tests/utils_for_test.py:23
/home/vagrant/Documents/annofab-api-python-client/tests/utils_for_test.py:23: PytestCollectionWarning: cannot collect test class 'TestWrapper' because it has a __init__ constructor
class TestWrapper:
-- Docs: https://docs.pytest.org/en/latest/warnings.html
----------- coverage: platform linux, python 3.6.6-final-0 -----------
Coverage HTML written to dir htmlcov
この警告はどのような意味でしょうか?
またどうすれば解決できますか?
私は以下のように考えているため、なぜ「cannot collect test class 'TestWrapper' 」と言われているかが分かりませんでした。
utils_for_test.py
はファイル名の先頭にtest
が付いていないので、テストコードとして実行されない- したがって 'TestWrapper'がテストクラスとして実行されなくて、特に問題ない
参考サイト
https://docs.pytest.org/en/latest/warnings.html#internal-pytest-warnings