標題可能有點令人困惑,但我需要弄清楚從 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')因為它只傳遞名字。問題是,我四處尋找似乎都無法使其正常作業。我不能直接去Person.last_name('Jonah'),因為屬性裝飾器是不可呼叫的,并且修補 _last_name, get , getattribute在這里也不起作用。
如果有人知道使這個單元測驗通過的正確語法,請按我的方式發送!我真的無法弄清楚。
提前致謝!
uj5u.com熱心網友回復:
您的類的__init__方法接受不同屬性的關鍵字引數,在您的測驗中將引數作為關鍵字傳遞。如果您不使用關鍵字引數,則將傳遞第一個位置引數,first_name因為它是定義的第一個關鍵字引數
def test_first_name(self):
testFirst = Person(first_name='James')
...
def test_last_name(self):
testLast = Person(last_name='Jonah')
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/468142.html
