Рубрики
Без рубрики

Python Unittest – пример теста на единицу

Python Unittest, Python Add Test Пример, Python Unittest Tuttorial, Python Build Test Framework Triverial, Python 3 Unittest, запустить Unittest Python.

Автор оригинала: Pankaj Kumar.

Сегодня мы узнаем о Python Unittest и просматривать программы тестирования Python Build. В предыдущем уроке мы узнали о функции Python Zip.

Python Unittest

Python Unittest Module используется для проверки единицы исходного кода. Предположим, вам нужно проверить ваш проект. Вы знаете, какие данные вернутся функция. После написания огромного кода необходимо проверить, правильно ли вывод или нет.

Обычно, что мы делаем, это печатать вывод и сопоставить его с помощью ссылочного вывода или проверьте вывод вручную.

Чтобы уменьшить эту боль, Python представил Unittest Module. Используя этот модуль, вы можете проверить вывод функции несколькими простыми кодом. В этом руководстве мы обсудим о базовом использовании Unittest Modele Module Python и написать некоторые тестовые случаи Python Build для проверки функций класса.

Пример теста на модуль Python

Прежде всего, мы должны написать какой-то код для тестирования единиц. У нас будет класс Python.

Основная цель класса – хранить и получать имя человека. Итак, мы пишем set_name () Функция хранить данные и get_name () Функция для извлечения имени из класса.

class Person:
    name = []

    def set_name(self, user_name):
        self.name.append(user_name)
        return len(self.name) - 1

    def get_name(self, user_id):
        if user_id >= len(self.name):
            return 'There is no such user'
        else:
            return self.name[user_id]


if __name__ == '__main__':
    person = Person()
    print('User Abbas has been added with id ', person.set_name('Abbas'))
    print('User associated with id 0 is ', person.get_name(0))

Мы назвали файл класса как Человек.пи Отказ И вывод вышеуказанного кода будет как ниже.

$ python3.6 Person.py 
User Abbas has been added with id  0
User associated with id 0 is  Abbas
$

Python Unittest структура

Теперь давайте узнаем, как кодировать для тестирования подразделения. Индивидуальный тест создан подклассом Unittest.testcase Отказ Переопределяя или добавляя соответствующие функции, мы можем добавить логику для тестирования. Следующий код будет преуспеть, если A равен B.

import unittest


class Testing(unittest.TestCase):
    def test_string(self):
        a = 'some'
        b = 'some'
        self.assertEqual(a, b)

    def test_boolean(self):
        a = True
        b = True
        self.assertEqual(a, b)

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

Как запустить Unittest модуль Python

Если вы используете IDE Pycharm, вы можете просто нажмите Ctrl + Shift + F10 Чтобы запустить Unittest модуль. В противном случае вы можете использовать командную строку для запуска этого модуля. Например, мы назвали файл для тестирования подразделения как Basic_test.py Отказ Таким образом, команда запустить Python Unittest будет:

$ Python3.6 -m Unittest Basic_test.testing

Если вы хотите увидеть всплеск, то команда будет;

$ Python3.6 -m Unittest -v basic_test.testing

Используя Pycharm, мы получаем ниже вывод.

Испытание и основные функции

Этот неясенний имеет 3 возможных результата. Они упоминаются ниже:

  1. ОК: Если пройдены все тестовые случаи, выходной вывод показывает OK.
  2. Отказ: Если какие-либо тестовые случаи не удались и подняли исключение AssertionError
  3. Ошибка: Если возникает какое-либо исключение, кроме исключения AssertionError.

Под Unittest Module есть несколько функций. Они перечислены ниже.

AssertnoteQual (A, B) a
apserttrue (x) Bool (X) верно
assertfalse (x) bool (x) ложно
Assertis (A, B) А это Б.
Assertis (A, B) А это Б.
Assertisnot (A, B) а не б
Assertisnone (X) X нет
assertisnotnone (x) х не так
Assertin (A, B) А в Б.
assertnotin (a, b) а не в б
ASSERTISINTANCE (A, B) Isinstance (A, B)
AssertnotisInstance (A, B) не осознание (a, b)

Пример теста на Python

Теперь пришло время писать модульные тесты для нашего исходного класса Человек Отказ В этом классе мы реализовали две функции – get_name () и set_name () Отказ

Теперь мы проверим эти функции, используя Неизвестный Отказ Таким образом, мы разработали два тестовых случая для этих двух функций. Посмотрите на следующий код, вы все легко поймете.

import unittest

# This is the class we want to test. So, we need to import it
import Person as PersonClass


class Test(unittest.TestCase):
    """
    The basic class that inherits unittest.TestCase
    """
    person = PersonClass.Person()  # instantiate the Person Class
    user_id = []  # variable that stores obtained user_id
    user_name = []  # variable that stores person name

    # test case function to check the Person.set_name function
    def test_0_set_name(self):
        print("Start set_name test\n")
        """
        Any method which starts with ``test_`` will considered as a test case.
        """
        for i in range(4):
            # initialize a name
            name = 'name' + str(i)
            # store the name into the list variable
            self.user_name.append(name)
            # get the user id obtained from the function
            user_id = self.person.set_name(name)
            # check if the obtained user id is null or not
            self.assertIsNotNone(user_id)  # null user id will fail the test
            # store the user id to the list
            self.user_id.append(user_id)
        print("user_id length = ", len(self.user_id))
        print(self.user_id)
        print("user_name length = ", len(self.user_name))
        print(self.user_name)
        print("\nFinish set_name test\n")

    # test case function to check the Person.get_name function
    def test_1_get_name(self):
        print("\nStart get_name test\n")
        """
        Any method that starts with ``test_`` will be considered as a test case.
        """
        length = len(self.user_id)  # total number of stored user information
        print("user_id length = ", length)
        print("user_name length = ", len(self.user_name))
        for i in range(6):
            # if i not exceed total length then verify the returned name
            if i < length:
                # if the two name not matches it will fail the test case
                self.assertEqual(self.user_name[i], self.person.get_name(self.user_id[i]))
            else:
                print("Testing for get_name no user test")
                # if length exceeds then check the 'no such user' type message
                self.assertEqual('There is no such user', self.person.get_name(i))
        print("\nFinish get_name test\n")


if __name__ == '__main__':
    # begin the unittest.main()
    unittest.main()

Обратите внимание, что Unittest Module выполняет функции тестирования в порядке их имени, а не в том порядке, который они не определены. И поскольку мы хотим, чтобы наш тест Set_Name выполнить в первую очередь, мы назвали наш тестовый случай, как test_0_set_name и test_1_get_name Отказ

Пример испытания на Python

Ниже изображения показывают выходные данные, созданные нашей программой тестовой тестирования – как в обычном режиме, так и в Verbose Mode.

$ python3.6 -m unittest -v PersonTest.Test
test_0_set_name (PersonTest.Test) ... Start set_name test

user_id length =  4
[0, 1, 2, 3]
user_name length =  4
['name0', 'name1', 'name2', 'name3']

Finish set_name test

ok
test_1_get_name (PersonTest.Test) ... 
Start get_name test

user_id length =  4
user_name length =  4
Testing for get_name no user test
Testing for get_name no user test

Finish get_name test

ok

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

OK
$

Это все о Python Unittest Tutorial. Чтобы узнать больше, прочитайте Официальная документация Отказ Для любого дополнительного запроса, пожалуйста, используйте окно комментариев. 🙂.