Автор оригинала: 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 возможных результата. Они упоминаются ниже:
- ОК: Если пройдены все тестовые случаи, выходной вывод показывает OK.
- Отказ: Если какие-либо тестовые случаи не удались и подняли исключение AssertionError
- Ошибка: Если возникает какое-либо исключение, кроме исключения 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. Чтобы узнать больше, прочитайте Официальная документация Отказ Для любого дополнительного запроса, пожалуйста, используйте окно комментариев. 🙂.