首页 > 解决方案 > 未定义全局名称“RomanNumeralConverter”

问题描述

我正在尝试编写一个单元测试,但总是在 globalname not defined 上出现错误。

我在 test_TestCase.py 中的代码

import unittest


class RomanNumeralConverterTest(unittest.TestCase):

    def test_parsing_millenia(self):
        value = RomanNumeralConverter("M")  # type: RomanNumeralConverter
        self.assertEquals(1000, value.convert_to_decimal)

    def test_parsing_century(self):
        value = RomanNumeralConverter("C")
        self.assertEquals(100, value.convert_to_decimal())

    def test_parsing_half_century(self):
        value = RomanNumeralConverter("L")
        self.assertEquals(50, value.convert_to_decimal())

    def test_parsing_decade(self):
        value = RomanNumeralConverter("X")
        self.assertEquals(10, value.convert_to_decimal())

    def test_parsing_half_decade(self):
        value = RomanNumeralConverter("V")
        self.assertEquals(5, value.convert_to_decimal())

    def test_parsing_parsing_one(self):
        value = RomanNumeralConverter("I")
        self.assertEquals(1, value.convert_to_decimal())

    def test_empty_roman_numeral(self):
        value = RomanNumeralConverter(" ")
        self.assertTrue(value.convert_to_decimal() == 0)
        self.assertFalse(value.convert_to_decimal() > 0)

    def test_no_roman_numeral(self):
        value = RomanNumeralConverter(None)
        self.assertRaises(TypeError, value.convert_to_decimal)


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

recipe1.py 中的代码

class RomanNumeralConverter(object):

    def __init__(self, roman_numeral):
        self.roman_numeral = roman_numeral
        self.digit_map = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1}

    @property
    def convert_to_decimal(self):
        val = 0  # type: int
        for char in self.roman_numeral:
            val += self.digit_map[char]
        return val

NameError:未定义全局名称“RomanNumeralConverter”


在 0.001 秒内运行 8 次测试

失败(错误=8)

标签: pythonpython-2.7

解决方案


在您的 unittest.py 中,您似乎错过了导入您在另一个文件中定义的类..


推荐阅读