Класс не видит атрибут

Андрей)))))))))))))

Новичок
Пользователь
Июл 11, 2020
11
0
1
Всем привет. Решил сделать микро unit-test для методов по расчету объема фигур. Вопрос: почему тестовый класс не видит атрибут calc(я же в setup определяю его)

Python:
import unittest#подключаем unittest
import math
PI = math.pi

class calculate:
    def cone(r, h, e):
        answer = r * r * PI * h * 1/3  # вычисляем ответ
        tem = '{:.' + e + 'f}'  # шаблон точности
        return tem.format(answer)


    def cylinder(r, h, e):
        answer = r * r * PI * h  # вычисляем ответ
        tem = '{:.' + e + 'f}'  # шаблон точности
        return tem.format(answer)

    def cube(h, e):
        answer = h * h * h
        tem = '{:.' + e + 'f}'
        return tem.format(answer)

    def sphere(r, e):
        answer = r*r*r*PI*4/3
        tem = '{:.' + e + 'f}'
        return tem.format(answer)


class Mytest(unittest.TestCase):
    def setup(self):
        self.calc = calculate()

    def test_cone(self):
      self.assertEqual(self.calc.cone(4, 7, 3), "")

    def test_cylinder(self):
      self.assertEqual(self.calc.cylinder(10, 5, 3), "")

    def test_cube(self):
      self.assertEqual(self.calc.cube(3, 2), "27.00")

    def test_sphere(self):
      self.assertEqual(self.calc.sphere(10, 2), "")


if __name__ == "__main__":# если главный код, то запуск теста
  unittest.main()

Использую PyCharm 2022, интепретатор - python 3.9

Заранее спасибо за помощь
 
Последнее редактирование модератором:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
971
219
43
20
Москва
Ну самое важное, почему не работает, это то, что у тебя функция setup вместо setUp
А так ты еще забыл всем методам своего класса указать self в принимаемые аргументы, класс назвал с маленькой буквы (так не принято), пытаешься складывать числа и строки tem = '{:.' + e + 'f}' (надо например так: tem = f'{{:.{e}f}}')
 

Форум IT Специалистов