ПКС / ПКС. Лабораторная 4
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Кафедра информационных управляющих систем
Лабораторная работа № 03
по Б1.О.12 «ПРОГРАММИРОВАНИЕ КРИТИЧЕСКИХ СЕРВИСОВ»
Студент гр. ИСТ-111_____________________________ П.П. Иванов
(подпись)
Проверил ___________________________ А. В. Параничев
(оценка и подпись)
Санкт-Петербург
2023 год
Юнит-тестирование функций прототипа GUI сервиса на языке Python
[желтым - для подстановки своих значений; зеленым - прочитать комментарии и удалить перед отправкой; все выделение убрать перед отправкой; файл переименовать по шаблону]
Для проверки работы прототипа GUI составлены 4 класса по 2 функции-теста в каждом (успешный и неуспешный); реализация выполнена в виде файла testgui_00.py (результаты представлены в табл. 1):
[1. в таблицу подставить вызываемые функции GUI сервиса; код взять из 3й лабораторной (в котором уже должны быть дополнены значениями return для разных вариантов возвращаемых значений) для функций GUI, чтобы тест выполнялся без ввода данных пользователем устанавливается переменная _flag_gui в 0 (также см. пример в 3й лабораторной работе)
2. требуется, чтобы классов было 4, в каждом по 2 функции, которые выполняются как успешно, так и не успешно, используя assertEqual() и assertNotEqual(); в коде в примере 1 тестовый класс и 4 тестовых метода в нем;
в примере self.assertEqual(-1, self.gd.login()) - проверка на равенство ожидаемого значения -1 и фактического: тоже -1, т.к. не заполнены ни логин, ни пароль;
self.assertNotEqual() - проверка на неравенство (т.е. тест успешный, если ожидаемые и фактический коды не равны)]
import unittest
from main import gui_data_00
class MyTestCase(unittest.TestCase):
gd = gui_data_00()
gd._flag_gui = 0 # режим тестирования
gd.loginForm()
def test_fail_login_fail_pwd(self):
self.assertEqual(-1, self.gd.login()) # проверка на равенство коду возврата
def test_ok_login_fail_pwd(self):
self.gd.set_name("abcd@mail.ru")
self.assertEqual(-2, self.gd.login()) # проверка на равенство коду возврата
#def test_ok_login_ok_pwd(self):
# self.gd.set_qwd("1111111") # неправильный пароль
# self.assertEqual(1, self.gd.login()) # проверка на равенство коду возврата
#def test_ok_login_fail_pwd(self): # правильный логин-пароль
# self.gd.set_name("123456")
# self.assertEqual(0, self.gd.login()) # проверка на равенство коду возврата
if __name__ == '__main__':
unittest.main()
Таблица 1
Результаты юнит-тестирования функций GUI
Номер теста п/п |
Тестовая функция и значения параметров |
Ожидаемый результат |
Фактический результат |
Результат теста |
1 |
assertEqual(0, test_gui_settings.settings(10, 2, 3.2, 10)) |
0 |
0 |
OK |
2 |
assertEqual(0, test_gui_settings.settings(10, 2, 3.2, 100)) |
0 |
6 |
Failed |
3 |
assertEqual(4, test_gui_settings.settings(200, 2, 3.2, 10)) |
4 |
4 |
OK |
4 |
assertNotEqual(0, test_gui_settings.settings(10, 2, 3.2, 10)) |
!0 |
0 |
Failed |
5 |
… |
… |
… |
OK |
6 |
… |
… |
… |
OK |
7 |
… |
… |
… |
OK |
8 |
… |
… |
… |
OK |
В табл. 1 показаны следующие тесты: [перечислить и объяснить тесты как тестовые функции: их будет 8 (или более)]
№ 1, 3, 5 и 7 выполнены успешно (ОК), т.к. ожидаемое значение и фактическое совпали; … [объяснить о работе функций assertEqual() и assertNotEqual() при тестировании пользовательских функций с заданными параметрами].
№ 2, 4, 6 и 8 выполнены неуспешно (Failed), т.к. в БД нет идентификатора "100500", невозможно добавить и обновить строку с теми данными, которые уже есть в таблице, невозможно удалить строку по несуществующему индексу 11.
Вывод: об используемых значениях ответа для функций модульного тестирования (юнит-тестирования): 5-6 строк.