我試圖測試我寫的一個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
有沒有一種辦法將會話綁定到測試文件中的數據庫?