Импортированный скрипт выполняет себя в классе unittest, даже если присутствует __name__ == "__main__". - PullRequest
0 голосов
/ 03 июля 2019

Тестирование функций из импортированного скрипта Python, который создает шаблон django, приводит к тому, что указанная функция выполняется при запуске теста.

Файл тестирования находится в той же папке, что и тестируемый скрипт.Файл тестирования включает unittest.main() согласно документации unittest.Протестированный скрипт также включает if __name__ == "__main__", под которым находится основная функция, вызывающая все остальные функции в скрипте.

Если я поставлю if _name__ == "__main__" в верхней части тестируемого скрипта и запусту весь скрипт под этим, еслиБлок, сценарий все еще работает как задумано, однако при запуске файла тестирования выдается ImportError.

Ссылка на сценарий (это не очень долго): https://github.com/PersonRP7/django_tests_generator_standalone/blob/functional_refactor/mts_functional.py

import unittest
import mts_functional

class TestMakeTestStandalone(unittest.TestCase):

    def test_set_app_name(self):
        app_name = "one"
        response = mts_functional.set_app_name()

        self.assertEqual(
            response,
            "one"
        )

Когда я запускаю вышеупомянутый тест (либо в Atom, либо в powershell, используя python -m unittest discover), меня запрашивают app_name, и если мой ответ соответствует переменной app_name, определенной в test_set_app_name(self),тест проходит.Если этого не произойдет, тест не пройден.

Я также пытался импортировать отдельные функции, используя from mts_functional import some_function, но результат был таким же.

Я не уверен, что этодаже правильный подход, или как протестировать другие более сложные функции, но это, вероятно, другая тема, учитывая приоритеты в действительности правильного импорта и запуска тестового файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...