Pytestユニットテストフレームワークのマーキング例

15470 ワード

1、Pytestにおけるタグ使用例
  • パラメータ-kを接続して実行するテスト項目を選択
  • pytest -k test_szdcs -s
  • test_szdcsは関数名
  • -kに続く名前は、関数名、クラス名、ファイル名、ディレクトリ名
  • とすることができる.
  • 大文字と小文字の区別
  • は、ファジイマッチング
  • をサポートする.
  • は、選択例名に含まれない内容をnotで表すことができ、以下の
  • である.
    class Test01():
        def test_szdcs(self):
            print(" ")
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #      pytest -k "not sz" -s
    #  
    test_demo1.py 
     .
     .
  • は、選択する使用例名に複数のキーワードが同時に含まれることをandで表すことができ、以下の
  • である.
    class Test01():
        def test_szdcs(self):
            print(" ")
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #          pytest -k "g and z" -s
    #  
    test_demo1.py 
     .
  • は、選択する用例名のうちの1つのキーワードをorで表すことができる、以下の
  • である.
    class Test01():
        def test_szdcs(self):
            print(" ")
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #          pytest -k "sh or sz" -s
    #  
    test_demo1.py 
     .
     .
  • ラベルの実行に必要なテスト項目を指定します.
  • @pytest .mark.tag
  • tagはカスタムラベル名
  • メソッドにラベル
  • を付けることができる.
  • クラス全体にラベル
  • を付けることもできる.
  • は、グローバルタグ
  • を定義することもできる.
  • pytest test_demo1.py -m tag -s
  • pytestの後にクラス名、ファイル名、ディレクトリ名
  • を接続できます.
  • -m後付けラベル名

  • #  
    import pytest
    
    class Test01():
        def test_szdcs(self):
            print(" ")
    
        @pytest.mark.tag
            #  ,  tag
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #           pytest test_demo1.py -m tag -s
    #  
    test_demo1.py 
     .
    #  
    import pytest
    
    class Test01():
        def test_szdcs(self):
            print(" ")
    
        def test_gzdcs(self):
            print(" ")
    
    @pytest.mark.tag
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #           pytest test_demo1.py -m tag -s
    #  
    test_demo1.py 
     .
    import pytest
    #  
    mark = pytest.mark.tag
    
    class Test01():
        def test_szdcs(self):
            print(" ")
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #          pytest -m tag -s
    #  
    test_demo1.py 
     .
     .
     .

    2、Pytestのskipスキップ例
  • タグskipは、この例をスキップし、実行しないことを示す
  • pytest.mark.skip(reason="str")

  • #   skip, 
    import pytest
    
    class Test01():
        def test_szdcs(self):
            print(" ")
    
        @pytest.mark.skip(reason=" ")
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #           pytest -sv test_demo1.py
    #  
    test_demo1.py::Test01::test_szdcs  
    PASSED
    test_demo1.py::Test01::test_gzdcs 
    SKIPPED
    test_demo1.py::Test02::test_shdcs  
    PASSED
    #   skip, 
    import pytest
    
    @pytest.mark.skip(reason=" ")
    class Test01():
        def test_szdcs(self):
            print(" ")
    
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #          pytest -sv test_demo1.py
    #  
    test_demo1.py::Test01::test_szdcs 
    SKIPPED
    test_demo1.py::Test01::test_gzdcs 
    SKIPPED
    test_demo1.py::Test02::test_shdcs  
    PASSED

    3、Pytestのskipifスキップ例
  • は、この用例
  • を無視するか否かを条件で判断する.
  • 判断条件式pytest.mark.skipif(condition,reason="str")
  • import pytest
    
    class Test01():
        def test_szdcs(self):
            print(" ")
    
        @pytest.mark.skipif(2>1,reason=" ")
        def test_gzdcs(self):
            print(" ")
    
    class Test02():
        def test_shdcs(self):
            print(" ")
    
    #          pytest -sv test_demo1.py
    #  
    test_demo1.py::Test01::test_szdcs  
    PASSED
    test_demo1.py::Test01::test_gzdcs 
    SKIPPED
    test_demo1.py::Test02::test_shdcs  
    PASSED