Ich teste einige technische Gleichungen mit mehreren Parametern, die Arrays von Schwimmern zurückgeben. Um alle Fälle zu testen, möchte ich eine Reihe von Fixtures verwenden. Ich speichere die Testfälle derzeit in einer einfachen Datei, lade sie und gebe dann den interessierenden Testfall zurück. Gibt es einen besseren Weg, dies zu tun?Produzieren mehrere pytest Fixtures
@pytest.fixture(params=[0, 1, 2])
def test_case(request):
fpath = pathlib.Path(__file__).parent
fpath /= 'test_data'/'test_cases.json'
test_cases = json.load(fpath.open())
return test_cases[request.param]
def test_function(test_case):
# Run the test
Ich bin mir nicht sicher, ob ich die Frage verstanden habe. Warum nicht nur die Arrays in der Python-Datei inline? – nitzpo
Weil die Daten in der Python-Datei ziemlich komplex sind – arkottke
Sie meinen die JSON-Datei? Wenn ja, und Sie müssen die Daten in JSON-Dateien zu halten, dann ist dies so ziemlich alles. Sie können diesen Code leicht verbessern, indem Sie zum Beispiel den 'pytest_generate_tests'-Hook verwenden, um das Verzeichnis zu durchsuchen und Tests für jede Datei dort auszuführen. Auf diese Weise werden Sie beim Erstellen einer neuen JSON-Datei automatisch zu den Tests hinzugefügt. – nitzpo