W celu sprawdzenia poprawności napisanego kodu możemy napisać testy sprawdzające przy użyciu modułu unittest. Raz napisane testy pomagają również przy późniejszych zmianach w napisanym kodzie – czy zmiany nie spowodowały powstania błędów. Możemy również posłużyć się techniką TDD (Test Driven Development), w której pisanie testów poprzedza tworzenie właściwego programu.
Przedstawię klasę testującą poprawność metod obecnych w klasie Employee modułu employee.py. Prosta, przykładowa klasa Employee będzie zawierała oprócz metody __init__() także alternatywny konstruktor (metoda klasowa) oraz metody: set_bonus() – ustawianie premii dla pracownika, get_full_salary() – wynagrodzenie (podstawa+premia) oraz get_email() – adres email pracownika. W tym celu tworzymy skrypt zawierający klasę dziedziczącą po unittest.TestCase. Skrypt oczywiście musi zaimportować moduł unittest oraz testowany moduł tzn. listing pliku test_employee.py będzie wyglądał następująco:
import unittest
from employee import Employee
class EmployeeTestCase(unittest.TestCase):
def setUp(self):
self.john_doe = Employee('John', 5000)
self.jane_doe = Employee.from_full_name('Jane', 'Doe', 6000)
def test_get_email(self):
self.assertEqual(self.john_doe.get_email(), 'John@company.com')
self.assertEqual(self.jane_doe.get_email(), 'Jane.Doe@company.com')
def test_get_full_salary(self):
self.assertEqual(self.john_doe.get_full_salary(), 5000)
self.assertEqual(self.jane_doe.get_full_salary(), 6000)
self.john_doe.set_bonus(10)
self.jane_doe.set_bonus(15)
self.assertEqual(self.john_doe.get_full_salary(), 5500)
self.assertEqual(self.jane_doe.get_full_salary(), 6900)
Aby uruchomić poprawnie powyższy skrypt testujący należy go załadować jako moduł tzn.
python -m unittest test_employee.py
lub też dołączyć do skryptu testującego wywołanie unittest.main() tzn.
if __name__ == '__main__':
unittest.main()
>>część druga<<