So beheben Sie Fehler: Zip-argument #1 muss zur Unterstützung der iteration
Habe ich zwei test-Methoden mit dem gleichen problem, hier sind die ursprünglichen Methoden in der main Klasse:
def get_num_words(self, word_part):
""" 1 as default, may want 0 as an invalid case """
if word_part[3] == '0a':
self.num_words = 10
else:
self.num_words = int(word_part[3])
return self.num_words
def get_num_pointers(self, before_at):
self.num_pointers = int(before_at.split()[-1])
return self.num_pointers
Und hier sind die beiden test-Klassen:
def test_get_num_words(self):
word_part = ['13797906', '23', 'n', '04', 'flood', '0', 'inundation', '0', 'deluge', '0', 'torrent', '0', '005', '@', '13796604', 'n', '0000', '+', '00603894', 'a', '0401', '+', '00753137', 'v', '0302', '+', '01527311', 'v', '0203', '+', '02361703', 'v', '0101', '|', 'an', 'overwhelming', 'number', 'or', 'amount;', '"a', 'flood', 'of', 'requests";', '"a', 'torrent', 'of', 'abuse"']
expected = 04
real = self.wn.get_num_words(word_part)
for r, a in zip(real, expected):
self.assertEqual(r, a)
def test_get_num_pointers(self):
before_at = '13797906 23 n 04 flood 0 inundation 0 deluge 0 torrent 0 005'
expected = 5
real = self.wn.get_num_pointers(before_at)
for r, a in zip(real, expected):
self.assertEqual(r, a)
Dies ist der Fehler, die Sie aussenden: TypeError: zip argument #1 must support iteration
Das Programm funktioniert komplett, und nur diese 2 tests nicht in 20 verschiedenen tests.
InformationsquelleAutor Johnnerz | 2013-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
gen_num_pointers()
undgen_num_words()
Methoden eine Ganzzahl zurück.zip()
kann nur mit Sequenzen (Listen, sets, tuples, strings, Iteratoren, etc.)Brauchen Sie nicht zu rufen
zip()
an alle hier; Sie testen eine ganze Zahl gegen eine andere:ist viel.
Sie wollen auch zu vermeiden, mit einer der führenden
0
auf integer-Literale.04
wird interpretiert als eine oktal - Nummer; wenn Sie jemals zu ändern, dass diese Zahl mit mehr Ziffern oder mit Ziffern außerhalb Bereich 0-7, würden Sie in eine unangenehme überraschung:InformationsquelleAutor Martijn Pieters
Den Fehler erklärt, was Los ist: die Argumente, die zip werden müssen, iterables (dh Listen, Tupel, oder etwas anderes können Sie tatsächlich Durchlaufen). Sie auf der Durchreise sind int-Werte, dh einzelne zahlen.
Ich bin nicht sicher, was genau Sie versuchen zu tun, durch aufrufen von zip, aber vielleicht wollen Sie nur zu vergleichen, real und erwartet direkt?
InformationsquelleAutor Daniel Roseman
Ihre test sollte wie folgt Aussehen:
Macht es nur Sinn zu verwenden
for
Schleife, wenn Sie behaupten, mehr als einen Wert.InformationsquelleAutor Martin Maillard