Сбой модульного теста из-за невозможности найти глобальный модуль

#python #python-3.x #unit-testing #module #yaml

#python #python-3.x #модульное тестирование #модуль #yaml

Вопрос:

Из корня моего проекта я запускаю стандартную команду модульного тестирования python.

 python3 -m unittest
 

В итоге я получаю

 doc = yaml.safe_load(f)
NameError: name 'yaml' is not defined
 

Вот схема тестового кода:

 import unittest
import yaml
from validators.utils import get_settings_key
# from validators.validators import validate_assumed_role


class TestValidators(unittest.TestCase):
    
    def setUp(self):
        with open("boilerplate_aws.yaml") as f:
            self.doc = yaml.safe_load(f)
            self.infrastructure = self.doc["parameters"]["infrastructure"]
            self.inventory_role = self.infrastructure["assumed_role_arn"]
 
    def test_role_validator(self):
        settings_role = get_settings_key("assumed_role_arn")
        # self.assertTrue(validate_assumed_role(self.inventory_role, settings_role))
# 

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

Я рассматриваю модуль yaml как глобальный, который по умолчанию используется в Python. Просто интересно, не упускаю ли я чего-то, или это какой-то проект перепутал структуру? Просто для проверки безопасности я просмотрел пакет, и он находится здесь локально. Это под Ubuntu. Нет venv или чего-то подобного.

Спасибо.

Ответ №1:

Попробуйте выполнить следующее:

 sudo easy_install pip
sudo python -m pip install pyyaml
 

Если это не сработает, попробуйте установить определенную версию следующим образом:

 pip install pyyaml==X.XX
 

Эти возможные решения были найдены по этой проблеме на github.