У меня есть следующая структура проекта:
Код для каждого файла следующий (ничего не включено в 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 ", строка 11, в test_list_int result = execute (data) NameError: имя 'Calculate' не определено
Однако, если я измените метод «вычисления» на «сумму» (т. е. ниже), мой тест выполняется нормально. Примечание: Я должен отметить, что я скопировал этот пример с сайта в Интернете, и поэтому я думаю, что «сумма» определяется где-то, но я не совсем уверен, где и, следовательно, не знаю, почему происходит ошибка.
Изменение calc_sum.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()
---------- -------------------------------------------------- ---------- Пробежал 1 тест за 0.000 с
ОК