環境

  • 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