У меня проблема с попыткой модульного тестирования моего кода. У меня есть скрипт с именем «compute_stats2.py», который содержит определенную функцию «compute_stats» внутри функции «main», потому что я хочу встроить аргумент командной строки в main позже по линии. Все функции, используемые в compute_stats, определены в main, но я исключил их ради аккуратности, пожалуйста, дайте мне знать, если вам нужно взглянуть на это. При этом я пытался выполнить модульное тестирование (см. Код ниже), и каждый раз, когда я пытаюсь запустить тест, возникает эта ошибка.
AttributeError: модуль 'compute_stats2' не имеет атрибута 'compute_stats'
Мне интересно, неправильно ли я вызываю функцию в коде модульного теста. Любые предложения о том, как сделать этот звонок лучше.
PS заранее извиняюсь, если это действительно очевидное исправление, я не самый сильный кодер.
compute_stats2.py
def main():
def compute_stats(values):
if not values:
return None
else:
o_min=minimum_of_list(values)
o_max=values[-1]
o_avg=average_of_list(values)
o_median=median_of_list(values)
return(o_min, o_max, o_avg, o_median)
if __name__ == '__main__':
main()
test_compute_stats2.py
import unittest
import compute_stats2
class TestComputeStats2(unittest.TestCase):
def test_none_from_none(list):
ret = compute_stats2.compute_stats(None)
list.assertIsNone(ret)
def test_empty_list(list):
ret = compute_stats2.compute_stats([])
list.assertIsNone(ret)
def test_even_elements_list(list):
ret = compute_stats2.compute_stats([1,2,3,4])
list.assertEqual(ret, (1, 4, 2.5, 2.5))
def test_odd_elements_list(list):
ret = compute_stats2.compute_stats([1,2,12])
list.assertEqual(ret, (1, 12, 5, 2))
def test_single_element_list(list):
ret = compute_stats2.compute_stats([43])
list.assertEqual(ret, (43, 43, 43, 43))