单元测试只传递单个值而不是获取多个值
Unittest only passing single value rather than getting multiple values
标题可能有点令人困惑,但我需要弄清楚从 python 装饰器中获取 first_name 和 last_name 并将其插入的正确语法我的单元测试。
class Person:
def __init__(self, first_name = '', last_name = ''):
self.first_name = first_name
self.last_name = last_name
@property
@getting first name
def first_name(self):
return self._first_name
@first_name.setter
#setting first name
def first_name(self, first_name):
self._first_name = first_name.capitalize()
@property
#getting last name
def last_name(self):
return self._last_name
@last_name.setter
#setting last name
def last_name(self, last_name):
self._last_name = last_name.capitalize()
这是我的单元测试片段
class TestPerson(unittest.TestCase, Person):
def test_first_name(self):
testFirst = Person('James')
self.assertEqual(testFirst.first_name, 'James')
def test_last_name(self):
testLast = Person('Jonah')
#assertionerror is thrown here
#AssertionError: '' != 'Jonah'
#+Jonah
self.assertEqual(testLast.last_name, 'Jonah')
虽然 Person('James')
有效,但我知道它不适用于 Person('Jonah')
,因为它只传递名字。问题是,none 我四处摸索似乎使它正常工作。我不能直接去 Person.last_name('Jonah')
因为 属性 装饰器不可调用,并且修补 _last_name、get、getattribute 也不在这里工作。
如果有人知道使这个单元测试通过的正确语法,请发给我!我真的想不通。
提前致谢!
您的 class 的 __init__
方法接受不同属性的关键字参数,在您的测试中将参数作为关键字传递。如果您不使用关键字参数,那么第一个位置参数将传递给 first_name
,因为它是定义的第一个关键字参数
def test_first_name(self):
testFirst = Person(first_name='James')
...
def test_last_name(self):
testLast = Person(last_name='Jonah')
...
标题可能有点令人困惑,但我需要弄清楚从 python 装饰器中获取 first_name 和 last_name 并将其插入的正确语法我的单元测试。
class Person:
def __init__(self, first_name = '', last_name = ''):
self.first_name = first_name
self.last_name = last_name
@property
@getting first name
def first_name(self):
return self._first_name
@first_name.setter
#setting first name
def first_name(self, first_name):
self._first_name = first_name.capitalize()
@property
#getting last name
def last_name(self):
return self._last_name
@last_name.setter
#setting last name
def last_name(self, last_name):
self._last_name = last_name.capitalize()
这是我的单元测试片段
class TestPerson(unittest.TestCase, Person):
def test_first_name(self):
testFirst = Person('James')
self.assertEqual(testFirst.first_name, 'James')
def test_last_name(self):
testLast = Person('Jonah')
#assertionerror is thrown here
#AssertionError: '' != 'Jonah'
#+Jonah
self.assertEqual(testLast.last_name, 'Jonah')
虽然 Person('James')
有效,但我知道它不适用于 Person('Jonah')
,因为它只传递名字。问题是,none 我四处摸索似乎使它正常工作。我不能直接去 Person.last_name('Jonah')
因为 属性 装饰器不可调用,并且修补 _last_name、get、getattribute 也不在这里工作。
如果有人知道使这个单元测试通过的正确语法,请发给我!我真的想不通。
提前致谢!
您的 class 的 __init__
方法接受不同属性的关键字参数,在您的测试中将参数作为关键字传递。如果您不使用关键字参数,那么第一个位置参数将传递给 first_name
,因为它是定义的第一个关键字参数
def test_first_name(self):
testFirst = Person(first_name='James')
...
def test_last_name(self):
testLast = Person(last_name='Jonah')
...