gpt4 book ai didi

python - 名称错误 : name 'METHOD_NAME' is not defined Python Unittest

转载 作者:行者123 更新时间:2023-12-04 10:28:13 25 4
gpt4 key购买 nike

我有以下项目结构:
enter image description here

每个文件的代码如下( init .py 中不包含任何内容):

my_sum.py

from service import calculate_sum

def main():
calculate_sum.create_sum()

if __name__ == "__main__":
main()

计算总和.py :
def calculate(arg):
total = 0
for val in arg:
total += val
return total

def create_sum():
print("hello")
total = calculate([5, 5])
print(total)

test_sum.py:
import unittest

from dir import *

class TestSum(unittest.TestCase):
def test_list_int(self):
"""
Test that it can sum a list of integers
"""
data = [1, 2, 3]
result = calculate(data)
self.assertEqual(result, 6)

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

如您所见,这是一个计算列表总和的非常简单的程序。 注:我正在模仿一个更大的项目,因此为什么我对方法进行了多次(相当不必要的)调用。

当我运行 python -m unittest discover -s test/来自 MainDir目录,我得到一个错误:

testsum.py", line 11, in test_list_int result = calculate(data) NameError: name 'calculate' is not defined



但是,如果我将“计算”方法更改为“求和”(即下面的),我的测试运行良好。 注:我应该注意,我从在线站点复制了这个示例,因此,我认为“总和”是在某处定义的,但我不确定在哪里,因此不知道为什么会发生错误。

更改 计算总和.py 以下通过测试:
def sum(arg):
total = 0
for val in arg:
total += val
return total

def create_sum():
print("hello")
total = sum([5, 5])
print(total)

testsum.py :
import unittest

from dir import *

class TestSum(unittest.TestCase):
def test_list_int(self):
"""
Test that it can sum a list of integers
"""
data = [1, 2, 3]
result = sum(data)
self.assertEqual(result, 6)

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

---------------------------------------------------------------------- Ran 1 test in 0.000s

OK

最佳答案

sum(_iterable)是python中的一个内置方法。所以它没有调用你的方法,而是调用了内置方法。

在您的测试方法中,您没有导入 service您在主模块中所做的模块。

添加 from MainDir.dir.service.calculate_sum import calculate到您的测试模块,一切都应该正常工作。

关于python - 名称错误 : name 'METHOD_NAME' is not defined Python Unittest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60542851/

25 4 0
文章推荐: html - BeautifulSoup : extracting from deeply nested
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com