Ich habe diese Datei:zur Initialisierung "Konflikte" mit parametrisieren Optionen setup_class
import numpy as np
class Variables(object):
def __init__(self, var_name, the_method):
self.var_name = var_name
self.the_method = the_method
def evaluate_v(self):
var_name, the_method = self.var_name, self.the_method
if the_method == 'Average':
return np.average(var_name)
und diese Testdatei:
import unittest
import pytest
import numpy as np
from .variables import Variables
class TestVariables():
@classmethod
def setup_class(cls):
var_name = np.array([1, 2, 3])
the_method = 'Whatever'
cls.variables = Variables(var_name, the_method)
@pytest.mark.parametrize(
"var_name, the_method, expected_output", [
(np.array([1, 2, 3]), 'Average', 2),
])
def test_evaluate_v_method_returns_correct_results(
self, var_name, the_method,expected_output):
var_name, the_method = self.variables.var_name, self.variables.the_method
obs = self.variables.evaluate_v()
assert obs == expected_output
if __name__ == "__main__":
unittest.main()
Nun, mein Problem ist, dass ich die Werte initialisiert werden (var_name, the_method) in der Setup-Klasse.
Also, wenn ich verschiedene Werte in der Parametrierung verwende, werden diese Werte ignoriert.
So ist der Test jetzt wird berechnet, indem als the_method
Wert als Whatever
und nicht als Average
(was ich will in den verschiedenen parametrisieren Setup haben) getan.
Gibt es eine Möglichkeit, damit umzugehen, ohne die setup_class
zu verlieren?
Weil, wenn ich die setup_class weglassen, ok es funktioniert.
Wenn ich Sie richtig verstanden habe: Sie wollen 'setup_class' beibehalten, um das Objekt zu initialisieren, aber Parameter wie' Whatever' und 'Average' separat testen? Schließlich beabsichtigen Sie zwei Tests zu haben: für "Was auch immer" und "Durchschnittlich", oder? –
@PiotrDawidiuk: Ja, ich möchte setup_class in der Lage sein, die Variablen zu initialisieren. Und ich möchte 'parametrize' verwenden, um meine Tests zu machen. Ich will, was in' parametrize' existiert, ausgewertet und getestet werden. Rechtzeitig 'parametrisiert' wird "übersprungen" und nur was in der Variablen-Initialisierung vorhanden ist, wird getestet. – George