definiert Ich habe diese Klasse:mit pytest parametrisieren Befestigung läuft Ich erhalte `self` nicht
accept.py
class AcceptC(object):
def __init__(self):
self.minimum = 30
self.maximum = 40
und den Unittest:
accept_test.py
import unittest
import pytest
from app.accept import AcceptC
class TestAcceptC(unittest.TestCase):
def setUp(self):
self.accept = AcceptC()
@pytest.mark.parametrize(
"minimum, maximum, expected_min, expected_max", [
("13", "5", 30, 40),
("30", "40", 30, 40),
])
def test_init_returns_correct_results(minimum, maximum, expected_min, expected_max):
expected_min = self.accept.minimum
expected_max = self.accept.maximum
self.assertEqual(minimum, expected_min)
self.assertEqual(maximum, expected_max)
if __name__ == "__main__":
unittest.main()
Beim Ausführen mit Pytest erhalte ich einen Fehler:
NameError: name 'self' is not defined
Ich sah auch, dass ich self
in der Testfunktion nicht als Argument verwenden kann.
Schließlich ist es eine Möglichkeit, mit zu vermeiden:
expected_min = self.accept.minimum
expected_max = self.accept.maximum
und sofort self.accept.minimum
benutzen?
Wenn ich self
als Argument für die Testfunktion verwenden, gibt sie:
fixture 'self' not found
'def test_init_returns_correct_results' ist nicht in irgendeiner Klasse, daher ist" self "nicht definiert – ZiTAL
Es ist, weil selbst, wenn nicht definiert, wo Sie es verwenden. Das ist die ganze Antwort. Verwenden Sie nur Namen, die definiert sind. – Marcin
@ZiTAL: Sie hatten Recht.Ich hatte die Einrückung verpasst.Aber noch habe ich Fehlermeldungen .. – George