Pytestの使用例の作成方法


Pytestではクラスライターだけでなく、関数ライターもサポートされています.次に、どのように書くかを見てみましょう.
使用例を書く前に、Pytestの検索ルールを理解してから、どのような使用例がPytestが許可しているかを知ることができます.
  • Pytestのデフォルトでは、構成されているディレクトリ(pytestのプライベートプロファイル)から構成されているか、後で現在のディレクトリ(構成されていない場合)から再帰的に検索されます.コマンドラインの実行方法を使用すると、コマンドが実行されている現在のフォルダから検索されます.
  • 構成norecursedirs(同様に構成ファイルで構成されている無視ディレクトリ)がある場合、このディレクトリは無視されます.
  • 条件を満たすディレクトリの下にあるtest_*.py*_test.pyをすべて検索します.デフォルトでは、この要件に従ってファイルの名前を付ける必要があります.もちろんこれは変更できないわけではありませんが、pytest専用のプロファイルでテストのネーミングルールを変更できます.
  • 次に、これらのファイルから条件を満たすテスト項目(例)を検索します.
  • testで始まる関数です(下線をつけなくてもいいですが、pythonの明確な規範に従って、下線をつけたtest_はpythonコードの審美に合っています).
  • Testで始まる試験クラス(クラスでは__init__メソッドを定義できない)のtestで始まる試験メソッド.


  • 注意:
  • で検索されたルートディレクトリは__init__.pyではなく、サブディレクトリは__init__.pyを加えたほうがいい.これは検索に影響しないが、最終テストのロードに影響する可能性がある.
  • テストクラスには__init__初期化方法がないことに注意してください.
  • テストファイル名には.は必要ありません.例えば、test_foo.bar.pyは書けません.

  • はい、pytestの検索ディレクトリを簡単に理解してください.つまり、テストを書くときにテスト関数とテストクラスとして書くことができます.
    では、どのような場合にクラスを使用し、どのような場合に関数を使用しますか?
  • 個人の好み、これは冗談ではありませんて、もともと要求しなければなりません;
  • オブジェクト向けの書き方をもっと導入する必要があります.例えば、継承すると、クラスとして書きます.
  • 関連する使用例をまとめる必要がある場合は、クラスを使用します.

  • テストクラスは、オブジェクト向け自体が備えている抽象的な機能をより多く提供します.しかし、これは必要ではありません.すべてはあなたのプロジェクトの状況にかかっています.まずテスト関数を書くことができます.抽象的なものが必要な場合は、テストクラスを使用します.
    自身Pytestは,そのルールに適合するテストケースを検索し,テストケースのコードを実行し,実行状況を記録するだけである.テストコードをどう書くかについては、Pytestも管理できません.テスト例にprint('hello pytest')と書くように、このコードは私たちのテストの観点から何の意味もありませんが、コマンドで使用例ルールに合致すれば、Pytestはこれが使用例だと思って忠実に実行します.
    テスト関数の書き方は、前節で説明したように、名前付きルールとPython構文に合致するクラスを書くだけでいいです.
    import pytest
    
    def add(a, b):
        return a + b
    
    def teststr():
        """     """
        a, b = '1', '2'
        assert add(a, b) == '112'
    
    def test_int():
        """    """
        a, b = 1, 2
        assert add(a, b) == 3
    
    class TestSequence:
        def test_list(self):
            assert add([1], [2]) == [1, 2]
    
        def test_tuple(self):
            assert add((1,), (2,)) == (1, 2)
    
    if __name__ == '__main__':
        pytest.main()
    

    ただし、これらのクラスにはテストファームウェアsetUptearDownはありません.Pytestには専用のテストファームウェアの書き方があります.
    もちろん、Unittestの書き方に従ってテスト例を書くと、PytestのようにUnittestの基準に従って実行できます.やってみよう!