Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПКС / ПКС. Лабораторная 4

.docx
Скачиваний:
1
Добавлен:
19.09.2023
Размер:
25.96 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

Кафедра информационных управляющих систем

Лабораторная работа № 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 строк.