Как правильно писать юнит тесты в python?

Пользователь

от nikko , в категории: Python , 3 года назад

Как правильно писать юнит тесты в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@nikko  Вы можете использовать библиотеку unittest для юнит-тестов.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import unittest

class Axe: # Создаем класс для примера
    def iteration(self, x : int, y : int):
        return x + y
    
    def multiply(self, x : int, y : int):
        return x * y


class TestAxe(unittest.TestCase): # Создаем класс для тестов
    def setUp(self): # Создаем set-up функцию, которая обязательная при создании класса юнит-тестов
        self.axe = Axe()
    
    def test_iteration(self): # Создаем функции, которые будут делать тесты
        self.assertEqual(self.axe.iteration(15, 5), 20) # Указываем значения и ожидаемый результат
    
    def test_multiply(self):
        self.assertEqual(self.axe.multiply(5, 3), 15)

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


    # Вывод : 
    # test_iteration (__main__.TestAxe) ... ok
    # test_multiply (__main__.TestAxe) ... ok


    # ----------------------------------------------------------------------
    # Ran 2 tests in 0.000s


    # OK

Пользователь

от ian.heidenreich , 2 года назад

@nikko 

Писать юнит тесты в Python можно, используя библиотеку unittest.


Чтобы написать юнит-тест, необходимо:

  1. Импортировать модуль unittest
  2. Наследовать класс unittest.TestCase
  3. Написать тестовые методы, начинающиеся со слова test
  4. Запустить тесты, используя unittest.main()


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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())

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