问:我正在尝试调试class中的一个函数,以确保列表已经实现,如果不是,我希望出现一个错误。我对编程很陌生,并试图了解如何为上述调试目的有效地添加assert。
在class BaseAPI()的方法体中,我必须遍历列表,并对ConvenienceAPI(BaseAPI)中的每个项调用retrieve_category,在super()上传递新的列表。我认为我做错了什么,因为我得到了错误:TypeError: create_assessment() got an unexpected keyword argument 'category'
问题2我还希望category有一个包含多个类别(字符串)的列表。这不是现在发生的。方法中的列表不被迭代或创建。我不确定..。请参见下面的跟踪错误。
代码
实例化categories列表
api = BaseAPI()
api.create_assessment('Situation Awareness', 'Developing better skills', 'baseball', 'this is a video','selecting and communicating options', category=['Leadership', 'Decision-Making', 'Situation Awareness', 'Teamwork and Communication'])BaseAPI()方法,其中assert和create存在
class BaseAPI(object):
def create_assessment(self, name, text, user, video, element, category):
category = [] # Trying to check if category isn't a list
assert category, 'Category is not a list'
new_assessment = Assessment(name, text, user, video, element, category)
self.session.add(new_assessment)
self.session.commit()新添加的迭代列表,但仍然提供Error!
class ConvenienceAPI(BaseAPI):
def create_assessment(self, name, text, username, videoname, element_text, category_name):
user = self.retrieve_user(username)
video = self.retrieve_video(videoname)
element = self.retrieve_element(element_text)
categories = self.retrieve_category(category_name)
for items in categories: # < ==== added
return categories # < ==== added
return super(ConvenienceAPI, self).create_assessment(name, text, user, video, element, categories) 表格
class Assessment(Base):
__tablename__ = 'assessments'
#some code
category_id = Column(Integer, ForeignKey('categories.category_id'))
category = relationship('AssessmentCategoryLink', backref='assessments')
def __init__(self, name, text, user, video, element, category): # OBJECTS !!
#some code
self.category = []TracebackError
ERROR: db.test.test.test1
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/Users/ack/code/venv/NotssDB/notssdb/test/test.py", line 69, in test1
api.create_assessment('Situation Awareness', 'Developing better skills', 'baseball', 'this is a video','selecting and communicating options', category=['Leadership', 'Decision-Making', 'Situation Awareness', 'Teamwork and Communication'])
TypeError: create_assessment() got an unexpected keyword argument 'category'发布于 2015-08-26 16:14:45
您的断言声明应该是:
assert isinstance(category, list)也移除类别= []行。
发布于 2015-08-26 16:33:12
您将类别作为kwarg传递,但是方法签名将其作为位置arg。尝试将方法签名更改为
class BaseAPI(object):
def create_assessment(self, name, text, user, video, element, category=[]): 或者用位置arg来称呼它
return super(ConvenienceAPI, self).create_assessment(
name, text, user, video, element, category=category
) https://stackoverflow.com/questions/32231589
复制相似问题