Python Material Installation Dokumentation PythonKara Grundlagen Namensräume Funktionen Testen Strings Dictionary Listen Zeitmessungen Zufall Bits+Bytes Module Sockets xml serielle Schnittstelle Python in HTML Turtle xturtle Tkinter OOP Threads Zusicherungen exe Patterns GnuPlot Goto MySQL CGI Dateien Exceptions Grafik Mathematik Fischertechnik Unicode funktional Iterator Sound C Debugger regex Pfade Docstrings Django Bluetooth format Bytecode signal
Pfad: Startseite / Fächer / Informatik / Python / Testen
Autor: mk
07.11.2011 20:41
1270
Testen

Beispiel

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)

Beispiel zu pytest

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$ 

Links

Valid XHTML 1.0!