Je tente de tester une extension CKAN que j'ai écrite. Fondamentalement, je veux tester une fonction donnée certains paramètres, interroge avec succès la base de données et renvoie les données correctes. Cependant, je reçois cette erreur:CKAN - Liaison de la base de données au fichier de test
UnboundExecutionError: Impossible de trouver une liaison configurée sur Mapper Mapper | Utilisateur | utilisateur, expression SQL ou cette session
Voici le test: importation unittest de ckanext. import plugin matcher
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()
d'après mes recherches cette erreur à la suite d'une variable de session ne pas être attaché ou lié à une base de données. Donc, j'ai essayé de créer une session comme suit mais je reçois toujours la même erreur que ci-dessus:
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')
Voici la fonction get_ckanuser
, que l'on appelle dans le test 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
est-il un moyen de lier la session à la base de données dans le fichier de test?