У меня есть простой метод, который устанавливает для глобальной переменной значение True или False в зависимости от параметра метода.
Эта глобальная переменная называется feedback
и имеет значение по умолчанию False
.
Когда я вызываю setFeedback('y')
, глобальная переменная изменится на feedback = True
. Когда я вызываю setFeedback('n')
, глобальная переменная будет изменена на feedback = False
.
Теперь я пытаюсь проверить это с помощью unittest в Python:
class TestMain(unittest.TestCase):
def test_setFeedback(self):
self.assertFalse(feedback)
setFeedback('y')
self.assertTrue(feedback)
Когда я запускаю В этом тесте я получаю следующую ошибку: AssertionError: False is not true
.
Поскольку я знаю, что метод работает правильно, я предполагаю, что глобальные переменные сбрасываются как-то. Однако, поскольку я все еще очень плохо знаком с средой Python, я точно не знаю, что я делаю неправильно.
Я уже читал здесь статью о насмешках, но поскольку мой метод меняет глобальный Переменная, я не знаю, может ли насмешка решить эту проблему.
Буду благодарен за предложения.
Вот код:
main.py:
#IMPORTS
from colorama import init, Fore, Back, Style
from typing import List, Tuple
#GLOBAL VARIABLE
feedback = False
#SET FEEDBACK METHOD
def setFeedback(feedbackInput):
"""This methods sets the feedback variable according to the given parameter.
Feedback can be either enabled or disabled.
Arguments:
feedbackInput {str} -- The feedback input from the user. Values = {'y', 'n'}
"""
#* ACCESS TO GLOBAL VARIABLES
global feedback
#* SET FEEDBACK VALUE
# Set global variable according to the input
if(feedbackInput == 'y'):
feedback = True
print("\nFeedback:" + Fore.GREEN + " ENABLED\n" + Style.RESET_ALL)
input("Press any key to continue...")
# Clear the console
clearConsole()
else:
print("\nFeedback:" + Fore.GREEN + " DISABLED\n" + Style.RESET_ALL)
input("Press any key to continue...")
# Clear the console
clearConsole()
test_main.py:
import unittest
from main import *
class TestMain(unittest.TestCase):
def test_setFeedback(self):
self.assertFalse(feedback)
setFeedback('y')
self.assertTrue(feedback)
if __name__ == '__main__':
unittest.main()