注入された動的試験データから外Pytestテストクラス

今日、ネリーはPytestは、パラメータの外から入ってくるクラスTestClassををサポートすることができない私に尋ねましたか?各試験バッチ式方法の外から渡されたパラメータが必要です。データファイルは例がたくさんあるかもしれないので、不便な試合をオンにします。
しかし、我々は例を分類し、外側のクラスを介して横断するクラスデータと多重化するために使用する必要があります。これは、直接pytest.mark.parametrize使用することはできません。

ここで撮影したアプローチは次のとおりです。

  1. --dataコマンドラインオプションを追加し、ファイルYAMLを受け入れます
  2. このフィクスチャのデータの方法、ファイルパスに渡さ--dataを得ること、及び開放負荷、すべてのデータ、実施形態の名前からの発呼要求により取得されたデータ、例えば、戻り値データの全てと記事から抽出されたデータ

次のコードを特に参照して:
data.yamlファイルの内容、データフィールドは、テストメソッド名は、自動容易にするために、データに対応すると一致することがあることに注意してください。

test_a: 
  a: 1
  b: 2

test_b:
  a: 3
  b: 4

conftest.pyファイルの内容

import pytest
import yaml

def pytest_addoption(parser):   # 添加运行参数
    parser.addoption("--data", action="store", help="data file")

@pytest.fixture
def data(request):
    file_path = request.config.getoption("--data")  # 获取--data参数传的文件路径
    with open(file_path) as f:   # 加载所有数据
        all_data = yaml.safe_load(f) 

    test_case_name = request.function.__name__  # 获取调用的data这个fixture方法的测试方法名称

    return all_data.get(test_case_name)   # 只返回指定用例的数据

テストモジュールtest_demo3.pyコンテンツ

import pytest

class TestDemo(object):
    def test_a(self, data):  # 所有用例要带上data这个fixture参数
        print(data)

    def test_b(self, data):
        print(data)


if __name__ == '__main__':
    pytest.main(['test_demo3.py', '-sq', '--data=data.yaml'])

おすすめ

転載: www.cnblogs.com/superhin/p/11694919.html