Глобальные переменные не видны при тестировании функции - PullRequest
0 голосов
/ 19 января 2020

У меня есть 2 сценария, один - класс тестирования, второй - сценарий с функциями, которые я хочу проверить.

В сценарии, который я хочу проверить, есть много функций, которые используют глобальные переменные - эти переменные инициализируются в операторе if __name__ == '__main__': функцией с именем init_params() - инициализируют около 7 переменных. Пока здесь все хорошо. При вызове первой функции main(), которая вызывает другие функции, которая также вызывает другие функции последовательно, они используют эти инициализированные параметры из if __name__ == '__main__':, и они НЕ передаются в качестве параметров этим функциям - это означает, что они все еще видны всем функций в сценарии, не передавая их.

Проблема возникает, когда я пытаюсь протестировать эту функцию main(), при этом она выдает, что инициализированные переменные не объявлены. Затем я приступил к выполнению init_params() внутри функции main(), но они по-прежнему не распознаются, также попытался инициализировать его в тестовом классе, но ничего не помогло. Единственное, что я могу думать о том, что это сработает, - это передать все эти 7 переменных каждой функции в скрипте, что похоже на 3-4 функции, я могу это сделать, и это будет работать наверняка - но это ужасно. И я уверен, что есть другой способ сделать это. Любые идеи, как сделать это менее уродливым , чем моя идея?

Любая помощь высоко ценится!

import unittest

from script_i_want_to_test import main, init_params

class TestMul(unittest.TestCase):
    def test_list_int(self):
        """
        bla bla bla
        """
        img_path_fldr = 'path/that/main/needs/as/argument'
        valid_images, total_images = main(img_path_fldr)
        mul = valid_images * total_images
        self.assertEqual(mul, 3)

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



## the script i want to test
def function1():
    #bla bla bla..
    function2()
    ## bla bla bla

def function2():
    # shouts an error here because for example var2 isn't declared

def main(img_path_fldr):
    var1, var2, ..., var7 = init_params(img_path_fldr)
    function1()
    return bla1, bla2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...