py.test: Übergebe einen Parameter an eine Fixture Funktion

Ich benutze py.test, um einige DLL-Code in einer Python-Klasse MyTester zu testen. Zu Validierungszwecken muss ich einige Testdaten während der Tests protokollieren und anschließend weiter verarbeiten. Da ich viele test _... -Dateien habe, möchte ich die Tester-Objekterstellung (Instanz von MyTester) für die meisten meiner Tests wiederverwenden.

Da das Tester-Objekt die Referenzen zu den Variablen und Funktionen der DLL enthält, muss für jede der Testdateien eine Liste der Variablen der DLL an das Tester-Objekt übergeben werden (die zu protokollierenden Variablen sind für einen Test_ identisch). . Datei). Der Inhalt der Liste wird verwendet, um die angegebenen Daten zu protokollieren.

Meine Idee ist, es irgendwie so zu machen:

import pytest

class MyTester():
    def __init__(self, arg = ["var0", "var1"]):
        self.arg = arg
        # self.use_arg_to_init_logging_part()

    def dothis(self):
        print "this"

    def dothat(self):
        print "that"

# located in conftest.py (because other test will reuse it)

@pytest.fixture()
def tester(request):
    """ create tester object """
    # how to use the list below for arg?
    _tester = MyTester()
    return _tester

# located in test_...py

# @pytest.mark.usefixtures("tester") 
class TestIt():

    # def __init__(self):
    #     self.args_for_tester = ["var1", "var2"]
    #     # how to pass this list to the tester fixture?

    def test_tc1(self, tester):
       tester.dothis()
       assert 0 # for demo purpose

    def test_tc2(self, tester):
       tester.dothat()
       assert 0 # for demo purpose

Ist es möglich, dies zu erreichen, oder gibt es einen eleganteren Weg?

Normalerweise könnte ich es für jede Testmethode mit einer Art Setup-Funktion (xUnit-style) machen. Aber ich möchte eine Art Wiederverwendung erlangen. Weiß jemand, ob dies mit Vorrichtungen überhaupt möglich ist?

Ich weiß, dass ich so etwas machen kann: (aus den Dokumenten)

@pytest.fixture(scope="module", params=["merlinux.eu", "mail.python.org"])

Dafür muss ich die Parametrierung direkt im Testmodul vornehmen.Ist es möglich, über das Testmodul auf das Attribut params des Geräts zuzugreifen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage