wollte dieser Tage etwas in Richtung unittesting ausprobieren und habe dazu mein DNA-Modul (http://python.sandtner.org/viewtopic.php?t=2001, ist leider veraltet, werde demnächst mal was Neues rausgeben) genommen. Was ich ausprobieren wollte klappt reibungslos. Aber dann bin ich über dies hier gestolpert:
Meine Klasse sieht so aus:
Code: Alles auswählen
class DNA:
...
def __init__(self, s, out=sys.stdout):
"""Create DNA instance initialized to string s."""
self.out = out
s="".join([x.strip() for x in s.split(' ')]) #erase whitespace
self.seq = s.upper()
check = self.check_format() #Methode zum Testen ob das Inputformat
#eingehalten wurde
if not check:
raise IOError
...
#Funktion ohne bes. Wert - nur zum Testen
def __add__(self,other):
"""concatenating DNA objects and return DNA object"""
return DNA(self.seq + other.seq)
...
Code: Alles auswählen
import unittest
class TestDNAFunctions(unittest.TestCase):
...
def setUp(self):
self.name1 = DNA('ATGCATGCATGC')
self.name2 = DNA('TGAATGCATGCATGCTTGT')
...
def test__add__(self):
"""__add__ should concatenate DNA-objects and return them as an DNA-object"""
r = 'ATGCATGCATGCTGAATGCATGCATGCTTGT'
self.assertEqual((self.name1 + self.name2),DNA(r))
...
Code: Alles auswählen
...
======================================================================
FAIL: __add__ should concatenate DNA-object and return them as an DNA-object
----------------------------------------------------------------------
Traceback (most recent call last):
File "src/DNA.py", line 840, in test__add__
self.assertEqual((self.name1 + self.name2),DNA(r))
File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/unittest.py", line 292, in failUnlessEqual
raise self.failureException, \
AssertionError: ATGCATGCATGCTGAATGCATGCATGCTTGT != ATGCATGCATGCTGAATGCATGCATGCTTGT
----------------------------------------------------------------------
...
Zur einfacheren Darstellung :
1. String = ATGCATGCATGCTGAATGCATGCATGCTTGT
2. String = ATGCATGCATGCTGAATGCATGCATGCTTGT
Ist doch identisch? Und es handelt sich beide Male um Darstellungen der Klassenobjekte.
(Bei den "..." habe ich jedesmal was rausgenommen, was, wie finde, nicht wichtig für das Verständnis ist.)
Gruß,
Christian