繁体   English   中英

'class'对象没有属性'method'

[英]'class' object has no attribute 'method'

我收到一个错误“ AttributeError:'Test Employee'对象没有属性'increment_salary'”。 不知道为什么会收到此错误,因为'increment_salary'是一种方法,而不是属性,并且我99%的确定自己创建正确。 我已经搜索过,唯一看到的答案就是检查缩进和空格的混合情况,因此我仔细检查了每个缩进,并进行了三次检查。 这可能是错误的,因为我不熟悉如何在此处复制代码,但是我确信我在geany中做得正确。

import unittest

class Employee():
    """stores and updates info for each employee"""
    def __init__(self, first_name, last_name, salary):
        self.first_name = first_name
        self.last_name = last_name
        self.salary = salary
    def update_salary(self, new_salary):
        self.salary = new_salary
    def increment_salary(self, increase):
        self.salary += increase

class TestEmployee(unittest.TestCase):

    def setUp(self):
        first_name = 'first'
        last_name = 'last'
        pay_name = 100
        self.employee = Employee(first_name, last_name, pay)

    def test_update_salary(self):
        new_salary = 110
        self.employee.update_salary(self.new_salary)
        self.assertEqual(self.new_salary, self.update_salary)

    def test_raise(self):
        increase = 10
        self.employee.increment_salary(increase)
        self.assertEqual(110, self.increment_salary(increase))

unittest.main()

您尝试在您的TestEmployee测试用例上调用increment_salary()

self.assertEqual(110, self.increment_salary(increase))

您忘记了在self.employee上调用它。 以下内容不会引发异常:

self.assertEqual(110, self.employee.increment_salary(increase))

但是断言将失败,因为Employee.increment_salary()始终返回None 您要测试在测试中将salary属性设置为什么:

def test_raise(self):
    increase = 10
    self.employee.increment_salary(increase)
    self.assertEqual(110, self.employee.salary)

注意方法也是属性。 它们是可调用的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM