Wprowadzenie do unittest

Wprowadzenie do testowania w Pythonie

Alexander Levin

Data Scientist

Przypomnienie OOP

  • OOP – paradygmat programowania oparty na obiektach i klasach.
  • Klasa – szablon obiektu zawierający metody i atrybuty.
  • Metoda – funkcja lub procedura należąca do klasy.
  • Atrybut – zmienna należąca do klasy.
  • Obiekt – instancja klasy.
  • Przykład klasy w Pythonie:
    class Rectangle:
      # Constructor of Rectangle
      def __init__(self, a, b):
          self.a = a
          self.b = b
      # Area method
      def get_area(self):
          return self.a * self.b
    # Usage example
    r = Rectangle(4, 5)
    print(r.get_area())
    
>> 20
Wprowadzenie do testowania w Pythonie

Dziedziczenie w OOP

  • Klasy mogą dziedziczyć właściwości po innych klasach.
  • Klasę nadrzędną podaje się w nawiasach po nazwie nowej klasy.
    class RedRectangle(Rectangle):
      self.color = 'red'
    
Wprowadzenie do testowania w Pythonie

Czym jest unittest

  • unittest – wbudowany framework Pythona do automatyzacji testów (instalowany razem z Python).
  • unittestnie tylko do testów jednostkowych.
  • Oparty na OOP: każdy przypadek testowy to klasa, każdy test to metoda.
  • Przypadek testowy – instancja testu.
  • Zestaw testów – zbiór przypadków testowych.
Wprowadzenie do testowania w Pythonie

unittest a pytest

unittest

  • Oparty na OOP – wymaga tworzenia klas testowych)
  • Wbudowany (instalowany z dystrybucją Python)
  • Więcej metod asercji

pytest

  • Oparty na funkcjach – wyszukuje skrypty i funkcje zaczynające się od test_
  • Pakiet zewnętrzny (wymaga osobnej instalacji)

  • Mniej metod asercji

Wprowadzenie do testowania w Pythonie

Tworzenie testu w unittest

Test operatora potęgowania:

import unittest

# Declaring the TestCase class
class TestSquared(unittest.TestCase):
    # Defining the test
    def test_negative(self):
        self.assertEqual((-3) ** 2, 9)
Wprowadzenie do testowania w Pythonie

Metody asercji

  • .assertEqual(), .assertNotEqual()
  • .assertTrue(), .assertFalse()
  • .assertIs(), .assertIsNone()
  • .assertIsInstance(), .assertIn()
  • .assertRaises()
  • Wiele innych
Wprowadzenie do testowania w Pythonie

Podsumowanie

  • unittest – wbudowany framework Pythona oparty na OOP do automatyzacji testów
  • Przypadek testowy – instancja testu w unittest
  • Tworzenie testu:
    1. Deklaracja klasy dziedziczącej po unittest.TestCase
    2. Definicja funkcji testowych
  • Metody asercji
Wprowadzenie do testowania w Pythonie

Czas na ćwiczenia!

Wprowadzenie do testowania w Pythonie

Preparing Video For Download...