teil 16 Testing in progress.
This commit is contained in:
2
teil16/.gitignore
vendored
Normal file
2
teil16/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
./__pycache__
|
||||
./network/__pycache__/*
|
BIN
teil16/Fib-Testdaten.xlsx
Normal file
BIN
teil16/Fib-Testdaten.xlsx
Normal file
Binary file not shown.
13
teil16/fib.py
Normal file
13
teil16/fib.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# fib.py
|
||||
import sys
|
||||
|
||||
# berechnet rekursiv die Fibonaccizahl n.
|
||||
def fib(n):
|
||||
|
||||
# Rekursionsbedingung
|
||||
if n in [0,1]:
|
||||
return 1
|
||||
else:
|
||||
# Rekursionsaufruf
|
||||
return fib(n-1) + fib(n-2)
|
||||
|
20
teil16/testfib.py
Normal file
20
teil16/testfib.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from fib import fib
|
||||
import logging
|
||||
|
||||
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=logging.DEBUG)
|
||||
|
||||
logging.debug('Test startet')
|
||||
|
||||
result5 = fib(5)
|
||||
|
||||
result8 = fib(8)
|
||||
|
||||
|
||||
if result5 == 8 and result8 == 34:
|
||||
logging.info('Tests erfolgreich')
|
||||
else:
|
||||
logging.error('Tests fehlerhaft')
|
||||
|
||||
logging.debug('Testende')
|
||||
|
||||
|
57
teil16/unittestfib.py
Normal file
57
teil16/unittestfib.py
Normal file
@@ -0,0 +1,57 @@
|
||||
# coding: utf-8
|
||||
import unittest
|
||||
import numbers
|
||||
from fib import fib
|
||||
import logging
|
||||
import pandas as pd
|
||||
|
||||
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=logging.DEBUG)
|
||||
|
||||
class TestFib(unittest.TestCase):
|
||||
|
||||
# Methode zur Division a/b.
|
||||
def divide(self, a,b):
|
||||
if b == 0:
|
||||
raise ValueError('Dividend darf nicht 0 sein.')
|
||||
|
||||
return int(a/b)
|
||||
|
||||
|
||||
# Die setUp() Methode wird zu Beginn jedes Testcases aufgrufen
|
||||
def setUp(self):
|
||||
logging.debug('setting up test')
|
||||
self.results = [1,1,2,3,5,8,13,21,34,55]
|
||||
|
||||
#die beiden Tests aus ./testfib.py mit unittest
|
||||
def test_fib(self):
|
||||
|
||||
# assertEqual(n,r) testet, ob das Resultat r der Vorgabe n entspricht.
|
||||
self.assertEqual(8,fib(5))
|
||||
self.assertEqual(34,fib(8))
|
||||
|
||||
def test_mult_fib(self):
|
||||
results =[1,1,2,3,5,8,13,21,34,55]
|
||||
|
||||
for n in range(0,9):
|
||||
self.assertEqual(results[n],fib(n))
|
||||
|
||||
def test_divide(self):
|
||||
|
||||
self.assertEqual(2, self.divide(2,1))
|
||||
self.assertEqual(2, self.divide(4,2))
|
||||
self.assertEqual(3, self.divide(6,2))
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
self.divide(1,0)
|
||||
|
||||
def test_excel(self):
|
||||
data = pd.read_excel('./Fib-Testdaten.xlsx')
|
||||
results = data["Ergebnis"]
|
||||
|
||||
for key, result in data.items():
|
||||
if isinstance(key, numbers.Number): #Überspringen der Überschriftenzeile
|
||||
self.assertEqual(result, fib(int(key)))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Reference in New Issue
Block a user