コマンドライン引数からテスト関数をパラメータ化できます。 クラスにスコープを設定することは可能です。 私はこれらの2つのものを結合したいので、各クラスはクラス内のフィクスチャに与えられたパラメータ化された引数を受け取ります。pytestを使用してクラスレベルのフィクスチャを動的にパラメータ化
(基本的にコマンドライン引数ごとに1つの非常に高価な操作を実行してから、その操作の結果に対してさまざまな安価で迅速なテストを行う必要があり、高価な操作を再実行する必要はありません私はそれを保存する方法をしたい)
つまり、私はpytest_generate_tests(metafunc)と同等のものを探しています。これはテスト関数ではなくフィクスチャを動的にパラメータ化するために働きます。
すでにうまくいっていないことは、要求パラメータを読み込んで、これらを pytest_generate_testsフックで設定することです。このテストを実行する
conftest.py:
def pytest_generate_tests(metafunc):
metafunc.parametrize("result", [
(1,0),(1,2)
])
test_thing.py:
class TestThingy:
@pytest.fixture(scope="class")
def result(self, request):
a,b=request.param
return a+b
#@pytest.mark.parametrize("result", [(0, 1), (1, 2)])
def test_one(self, result):
assert result!=2
は(私がconftestフックなしとアンコメントコメント行でそれをしようとしたとき、テストはうまく実行されたことに注意してください)、次のエラーが発生することが発生します
@pytest.fixture(scope="class")
def result(self, request):
a,b=request.param
AttributeError: 'SubRequest' object has no attribute 'param'
私は同じ結果を得るための他の方法にも興味があります。
py.testチームが体重を増やすことができれば素晴らしいと思います。 –