【问题标题】:Python unit test - NameError: name 'upper' is not defined [closed]Python单元测试-NameError:名称'upper'未定义[关闭]
【发布时间】:2021-05-17 20:17:28
【问题描述】:

使用 Python 3.x。运行以下代码的测试用例时,我收到错误 - NameError: name 'upper' is not defined。我附上要测试的文件,File_P_third文件是代码,单元测试文件test_upper

文件File_P_third

def upper_text(text):
    return text.upper()

文件test_upper

import unittest
import File_P_third


class TestUpper(unittest.TestCase):
    """docstring for ClassName"""
    def test_one_word(self):
        text = 'hello!'
        result = upper.upper_text(text)
        self.assertEqual(result, 'HELLO!')
        

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

我的 cmd 的退出文本:

D:\Дохуя программист\Projects>python test_upper.py
E
======================================================================
ERROR: test_one_word (__main__.TestUpper)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_upper.py", line 9, in test_one_word
    result = upper.upper_text(text)
NameError: name 'upper' is not defined

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)

所有文件都在一个目录中,我仍然无法理解为什么不起作用。网上搜不到同样的问题((

【问题讨论】:

  • 嗯,是的。 upper 未定义。 upper 应该在 upper.upper_text(text) 中是什么?
  • 您的 test_upper 文件是否完整?您应该使用 File_P_third。 upper_text() 或从 File_P_third 导入 upper_text 然后 upper_text(text)
  • File_P_third.upper_text(text)替换upper.upper_text(text),它应该可以工作

标签: python unit-testing nameerror


【解决方案1】:

import File_P_third 替换为from File_P_third import upper_text。以这种方式调用您的函数result = upper_text(text)。还要确保两个文件 File_P_third.py 和 test_upper.py 在同一个目录中。

您将在下面找到文件 File_P_third.py 的完整代码:

import unittest
from File_P_third import upper_text


class TestUpper(unittest.TestCase):
    """docstring for ClassName"""
    def test_one_word(self):
        text = 'hello!'
        result = upper_text(text)
        self.assertEqual(result, 'HELLO!')
        

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

【讨论】:

    【解决方案2】:

    如果你想把 'hello' 转换成大写,python 中的函数是 string.upper() 我不带参数见下文:

    test='hello'
    up=test.upper()
    print(up)
    # prints HELLO
    

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 2016-03-11
      • 2016-12-20
      • 2020-12-23
      • 2014-03-18
      • 2021-07-27
      相关资源
      最近更新 更多