#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.