我试图测试我写的一个CKAN扩展。基本上我想测试给定某些参数的函数,成功查询数据库并返回正确的数据。但是我得到这个错误:CKAN - 在测试文件中绑定会话到数据库
UnboundExecutionError:找不到上映射器映射配置绑定|用户|用户,SQL表达式或本届
这里的测试: 导入单元测试 从ckanext。匹配进口插件
class MatcherPluginTest(unittest.TestCase):
def setUp(self):
# Create instances
self.plugin_instance = plugin.MatcherPlugin()
def test_func_call(self):
user_account = ’testUser'
user_ckan = self.plugin_instance.get_ckanuser(user_account)
self.assertEqual(user_ckan['display_name'], 'Shani Agent')
if __name__ == '__main__':
unittest.main()
从我研究这个错误是因为没有附着或绑定到一个数据库中的会话变量的结果。所以我试图创建一个会话如下,但我仍然得到同样的错误如上:
def setUp(self):
self.plugin_instance = plugin.MatcherPlugin()
self.engine = create_engine('postgresql://...')
self.Session = sessionmaker(bind=self.engine)
self.session = self.Session()
def test_func_call(self):
user_account = ’testUser'
user_ckan = self.session.add(self.plugin_instance.get_ckanuser(user_account))
self.session.commit()
self.assertEqual(user_ckan['display_name'], 'Shani Agent')
这里的get_ckanuser
功能,即是所谓的test_func_call
测试:
def get_ckanuser(self, user):
import ckan.model
user_ckan = ckan.model.User.by_name(user)
# If the user exists, return user dictionary, else, return None
if user_ckan:
user_dict = toolkit.get_action('user_show')(data_dict={'id': user_ckan.id})
return user_dict
else:
return None
有没有一种办法将会话绑定到测试文件中的数据库?