ich finde einfach keinen richtigen Zugang zum Schreiben von Tests...
Code: Alles auswählen
import sys
sys.path.append('/home/mutetella/Daten/denkdran/src')
from dt import DateTimeScope as dts
from recurrence import (
DailyRecurrence as dr, WeeklyRecurrence as wr,
MonthlyRecurrence as mr, YearlyRecurrence as yr
)
def check(recurrence, expected, results):
assert len(expected) == len(results)
for result, expected in zip(results, expected):
assert result == expected
def test_daily_01():
b = dts((2014, 3, 31), ())
v = ((2014, 3, 31), (9999, 12, 31))
q = dts((2014, 3, 24), (2014, 4, 14))
tests = (
(dr(base=b, validity=v, interval=1, count=None),
(dts((2014, 3, 31), ()), dts((2014, 4, 1), ()),
dts((2014, 4, 2), ()), dts((2014, 4, 3), ()),
dts((2014, 4, 4), ()), dts((2014, 4, 5), ()),
dts((2014, 4, 6), ()), dts((2014, 4, 7), ()),
dts((2014, 4, 8), ()), dts((2014, 4, 9), ()),
dts((2014, 4, 10), ()), dts((2014, 4, 11), ()),
dts((2014, 4, 12), ()), dts((2014, 4, 13), ()),
dts((2014, 4, 14), ())
)
),
(dr(base=b, validity=v, interval=2, count=None),
(dts((2014, 3, 31), ()), dts((2014, 4, 2), ()),
dts((2014, 4, 4), ()), dts((2014, 4, 6), ()),
dts((2014, 4, 8), ()), dts((2014, 4, 10), ()),
dts((2014, 4, 12), ()), dts((2014, 4, 14), ()),
)
),
(dr(base=b, validity=v, interval=3, count=None),
(dts((2014, 3, 31), ()), dts((2014, 4, 3), ()),
dts((2014, 4, 6), ()), dts((2014, 4, 9), ()),
dts((2014, 4, 12), ())
)
)
)
for recurrence, expected in tests:
results = []
for query in q:
for result in recurrence._query(query):
results.append(result)
yield check, recurrence, expected, resultsJetzt suche ich nach einer Möglichkeit, einen Test zu schreiben, dem ich die verschiedenen Testbedingungen (`dr`, `q`ueries und `expected`) übergebe. Bis jetzt habe ich das:
Code: Alles auswählen
class TestDaily(object):
def setup_class(self):
self.dr = dr(base=dts((2014, 3, 31), ()),
validity=((2014, 3, 31), (9999, 12, 31)),
interval=1, count=None)
self.queries = dts((2014, 3, 24), (2014, 4, 14))
self.expected = (
dts((2014, 3, 31), ()), dts((2014, 4, 1), ()),
dts((2014, 4, 2), ()), dts((2014, 4, 3), ()),
dts((2014, 4, 4), ()), dts((2014, 4, 5), ()),
dts((2014, 4, 6), ()), dts((2014, 4, 7), ()),
dts((2014, 4, 8), ()), dts((2014, 4, 9), ()),
dts((2014, 4, 10), ()), dts((2014, 4, 11), ()),
dts((2014, 4, 12), ()), dts((2014, 4, 13), ()),
dts((2014, 4, 14), ())
)
def get_results(self):
for query in self.queries:
for result in self.dr._query(query):
yield result
def check(self, expected, result):
assert expected == result
def test(self):
results = tuple(self.get_results())
assert len(self.expected) == len(results)
for expected, result in zip(self.expected, results):
yield self.check, expected, resultIch weiß einfach nicht, wie ich da 'rangehen soll! Das, was ich testen möchte, ist ja immer dasselbe, nur die verschiedenen Szenarien und daraus folgend die vielen zu testenden Resultate bekomme ich nicht strukturiert!
mutetella
