Найти - Пользователи
Полная версия: Тестирование класса.
Начало » Python для новичков » Тестирование класса.
1
Murmakil
Имеется класс 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
Знаки табуляции удалились сами при опубликовании вопроса!
ZerG
Murmakil
Знаки табуляции удалились сами при опубликовании вопроса!

Редактировать сообщение
выделить код
нажать на картинку с кодом рядом с человечком в редакторе
выбрать Питон
Сохранить
Радоваться.
PEHDOM
наскидку
в
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]
Murmakil
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
PEHDOM
Murmakil
вот метод give_raise
ну и накой вы туда передаете ссылку на инстанс класса TestEmployee, когда нужно передать значение увеличения ЗП, или ничего не передавать если нужно подня на дефолтное значение?
self.rabotnik.give_raise(self)
а нужно
self.rabotnik.give_raise()
Murmakil

PEHDOM
сработало. Правда еще пришлось удалить преобразование в строку.
Я думал, при работе с классами self всегда передается.
PEHDOM
Murmakil
Я думал, при работе с классами self всегда передается.
вообще он передается всегда автоматически(кроме случае когда это медод класса или статический метод) если вызывается по типу инстанс.метод() и его не нужно самому передавать.
Murmakil
PEHDOM
так в данном случае метод give_raise относится к классу.
PEHDOM
Murmakil
так в данном случае метод give_raise относится к классу.
ну так и ссылку на инстанс класса интерпретатор сам подставит, не нужно ее самому передавать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB