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)