HSG |
|
Python bietet die Möglichkeit, in einem 'frei hängendem String' sowohl Kommentare als auch Tests zu einer Funktion zu dokumentieren. Kopiert man in der Shell gemachte Tests 1:1 an diese Stelle, so kann die Methode testmod aus dem Modul doctest die dokumentierten Tests wiederholen und auswerten.
# -*- coding: iso-8859-1 -*- # mk, 11.9.08 from math import sqrt def quadglei(a,b,c): """ Rückgabe: [Anzahl der Lösungen, Lösungen], [3]=unendl. >>> quadglei(0,0,0) [3] >>> quadglei(0,0,1) [0] >>> quadglei(0,1,2) [1, -2.0] >>> quadglei(7,7,-84) [2, -4.0, 3.0] >>> quadglei(1,2,-3) [2, -3.0, 1.0] >>> quadglei(10,1,0.025) [1, -0.050000000000000003] >>> (abs(quadglei(10,1,0.025)[1]--0.05)<1e-10) True >>> quadglei(10,1,1) [0] """ if a==0: if b==0: if c==0: return [3] else: return [0] else: x = float(-c)/b return [1,x] else: d = b*b-4*a*c if d>0: wd = sqrt(d) x1 = (-b-wd)/float(2*a) x2 = (-b+wd)/float(2*a) return [2,x1,x2] else: if d==0: x = -b/float(2*a) return [1,x] else: return [0] if __name__ == "__main__": import doctest doctest.testmod(verbose=True)
from ct0 import * def test_FIRST(): """ FIRST-Mengen der Kunert-Grammatik """ assert FIRST('A',G1) == {'a'} assert FIRST('S',G1) == {'b'} assert FIRST('Z',G1) == {'b'} def test_FOLLOW(): """ FOLLOW-Mengen der Kunert-Grammatik """ assert FOLLOW('A',G1) == {'a'} assert FOLLOW('S',G1) == {'b','c','$'} assert FOLLOW('Z',G1) == {'$'}
pytest-Lauf
mk@x2:~/1112/13Inf1$ py.test ============================= test session starts ============================== platform linux2 -- Python 3.2.2 -- pytest-2.1.3 collected 3 items ct0_test.py .. test_sample.py F =================================== FAILURES =================================== _________________________________ test_answer __________________________________ def test_answer(): > assert func(3) == 5 E assert 4 == 5 E + where 4 = func(3) test_sample.py:6: AssertionError ====================== 1 failed, 2 passed in 0.47 seconds ====================== mk@x2:~/1112/13Inf1$