1. Основы pytest#

Pytest - фреймворк для тестирования кода

Тестирование кода позволяет проверить:

  • работает ли код так как нужно

  • как ведет себя код в нестандартных ситуациях

  • пользовательский интерфейс

Уровни тестирования

  • unit - тестирование отдельных функций/классов

  • intergration - тестирование взаимодействия разных частей софта друг с другом

  • system - тестируется вся система, для web, например, это может быть тестирование от логина пользователя до выхода

Альтернативы pytest:

Пример тестов с unittest:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)


if __name__ == '__main__':
    unittest.main()

Аналогичный тест с pytest:

def test_upper():
    assert 'foo'.upper() == 'FOO'


def test_isupper():
    assert 'FOO'.isupper() == True
    assert 'Foo'.isupper() == False


def test_split():
    s = 'hello world'
    assert s.split() == ['hello', 'world']
    # check that s.split fails when the separator is not a string
    with pytest.raises(TypeError):
        s.split(2)