首页 > 解决方案 > 单元测试失败,无法找到全局模块

问题描述

从我的项目的根目录,我正在运行标准的 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 下。没有venvs,或类似的东西。

谢谢。

标签: pythonpython-3.xunit-testingmoduleyaml

解决方案


尝试运行以下命令:

sudo easy_install pip
sudo python -m pip install pyyaml

如果这不起作用,请尝试安装这样的特定版本:

pip install pyyaml==X.XX

在这个 github问题上找到了这些可能的解决方案。


推荐阅读