问题描述
我在烧瓶1.1.2和下面的python 3.8中对api使用Marshmallow进行了单元测试
schema.py
class ListSchema(Schema):
id = fields.Integer()
name = fields.String()
gone_date = fields.Function(lambda data: data.gone_date.timestamp())
main_service.py
class MainService:
@classmethod:
def get_list(cls):
list_schema = ListSchema()
list_data,total = Class.function_get_list_data
list_data = list_schema.dump(list_data,many=True)
当我为函数get_list
运行pytest时
mock = [(1,'Name_1',datetime.datetime(2020,8,20,0))],10
mock_data = mock.Mock(return_value=mock)
with mock.patch.object(Class,'function_get_list_data',mock_data):
response = MainService.get_list()
在这种情况下,如何通过lambda函数通过或测试。我已经尝试使用raise unittest.skip
,但这不是我的期望。我的功能仍然正常工作,仅在应用单元测试时出错。感谢您的帮助。
编辑:
此追溯:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/unittest/case.py",line 60,in testPartExecutor
yield
File "/usr/local/lib/python3.8/unittest/case.py",line 676,in run
self._callTestMethod(testMethod)
File "/usr/local/lib/python3.8/unittest/case.py",line 633,in _callTestMethod
method()
File "/opt/project/app/test/service/test_main_service.py",line 79,in test_process_list
response = MainService.get_list()
File "/opt/project/app/main/service/main_service.py",line 18,in process_main_list
list_data = list_schema.dump(list_data,many=True)
File "/usr/local/lib/python3.8/site-packages/marshmallow/schema.py",line 557,in dump
result = self._serialize(processed_obj,many=many)
File "/usr/local/lib/python3.8/site-packages/marshmallow/schema.py",line 515,in _serialize
return [
File "/usr/local/lib/python3.8/site-packages/marshmallow/schema.py",line 516,in <listcomp>
self._serialize(d,many=False)
File "/usr/local/lib/python3.8/site-packages/marshmallow/schema.py",line 521,in _serialize
value = field_obj.serialize(attr_name,obj,accessor=self.get_attribute)
File "/usr/local/lib/python3.8/site-packages/marshmallow/fields.py",line 312,in serialize
return self._serialize(value,attr,**kwargs)
File "/usr/local/lib/python3.8/site-packages/marshmallow/fields.py",line 1722,in _serialize
return self._call_or_raise(self.serialize_func,attr)
File "/usr/local/lib/python3.8/site-packages/marshmallow/fields.py",line 1736,in _call_or_raise
return func(value)
File "/opt/project/app/main/schemas/schema.py",line 13,in <lambda>
gone_date = fields.Function(lambda data: data.gone_date.timestamp())
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)