Уведомления

Группа в Telegram: @pythonsu

#1 Июль 5, 2018 19:00:26

Murmakil
Зарегистрирован: 2018-07-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Тестирование класса.

Имеется класс Employee с атрибутами имя, фамилия и зарплата. К нему прилагается метод, увеличивающий зарплату на 5000 по умолчанию. Так вот необходимо протестировать метод, когда зарплата повышается по умолчанию и когда повышается на другую величину. Проверил код класса - все работает, но вот когда тест, то код проваливается. Выдает ошибку.
ERROR: test_give_default_raise (__main__.TestEmployee)
———————————————————————-
Traceback (most recent call last):
File “DPiton/isayka.py”, line 12, in test_give_default_raise
self.rabotnik.give_raise(self)
File “DPiton\profile.py”, line 11, in give_raise
self.salary+=increase
TypeError: unsupported operand type(s) for +=: ‘int’ and ‘TestEmployee’

———————————————————————-
Ran 1 test in 0.047s

FAILED (errors=1)

 import unittest
from profile import Employee
class TestEmployee(unittest.TestCase):
    def setUp(self):
        first_name='Alexander'
        last_name='Isaev'
        self.salary=100
        self.rabotnik=Employee(first_name, last_name, self.salary)
        
    def test_give_default_raise(self):
        self.rabotnik.give_raise(self)
        self.assertEqual(5100, str(self.rabotnik.salary))
        
unittest.main()

Отредактировано Murmakil (Июль 5, 2018 21:15:54)

Офлайн

#2 Июль 5, 2018 19:02:15

Murmakil
Зарегистрирован: 2018-07-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Тестирование класса.

Знаки табуляции удалились сами при опубликовании вопроса!

Офлайн

#3 Июль 5, 2018 19:40:53

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Тестирование класса.

Murmakil
Знаки табуляции удалились сами при опубликовании вопроса!

Редактировать сообщение
выделить код
нажать на картинку с кодом рядом с человечком в редакторе
выбрать Питон
Сохранить
Радоваться.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#4 Июль 5, 2018 20:48:34

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Тестирование класса.

наскидку
в
self.salary+=increase
одна переменная имеет тип int а вторая TestEmployee
о чем вам честно сообщает интерпретатор:
self.salary+=increase
TypeError: unsupported operand type(s) for +=: ‘int’ and ‘TestEmployee’

что у вас в self.rabotnik.give_raise()? и накой ляд вы туда self передаете если судя по названию нужно указывать величину ЗП
Ну и да оформите код в теги

[code python][/code]



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#5 Июль 5, 2018 21:19:56

Murmakil
Зарегистрирован: 2018-07-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Тестирование класса.

PEHDOM
наскидкув self.salary+=increaseодна переменная имеет тип int а вторая TestEmployeeо чем вам честно сообщает интерпретатор:self.salary+=increaseTypeError: unsupported operand type(s) for +=: ‘int’ and ‘TestEmployee’ что у вас в self.rabotnik.give_raise()? и накой ляд вы туда self передаете если судя по названию нужно указывать величину ЗП Ну и да оформите код в теги
вот метод give_raise

 def give_raise(self, increase=5000):
        self.increase=increase
        self.salary+=increase
        return self.salary

Офлайн

#6 Июль 5, 2018 21:41:49

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Тестирование класса.

Murmakil
вот метод give_raise
ну и накой вы туда передаете ссылку на инстанс класса TestEmployee, когда нужно передать значение увеличения ЗП, или ничего не передавать если нужно подня на дефолтное значение?
self.rabotnik.give_raise(self)
а нужно
self.rabotnik.give_raise()



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#7 Июль 6, 2018 12:40:39

Murmakil
Зарегистрирован: 2018-07-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Тестирование класса.


PEHDOM
сработало. Правда еще пришлось удалить преобразование в строку.
Я думал, при работе с классами self всегда передается.

Офлайн

#8 Июль 6, 2018 14:43:31

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Тестирование класса.

Murmakil
Я думал, при работе с классами self всегда передается.
вообще он передается всегда автоматически(кроме случае когда это медод класса или статический метод) если вызывается по типу инстанс.метод() и его не нужно самому передавать.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 6, 2018 14:43:55)

Офлайн

#9 Июль 6, 2018 16:25:10

Murmakil
Зарегистрирован: 2018-07-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Тестирование класса.

PEHDOM
так в данном случае метод give_raise относится к классу.

Офлайн

#10 Июль 6, 2018 17:19:22

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Тестирование класса.

Murmakil
так в данном случае метод give_raise относится к классу.
ну так и ссылку на инстанс класса интерпретатор сам подставит, не нужно ее самому передавать.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version