[PYTHON] Automatisez les tests d'applications Facebook avec les utilisateurs de test Facebook

Bonjour sekitaka.

Si vous développez une application Facebook, vous devrez mettre en œuvre des tests pour les fonctions que vous publiez à l'aide de l'API Graph. Au début, je l'ai testé avec mon propre compte, mais en matière d'automatisation, j'ai dû envisager une autre méthode.

Après des recherches, Facebook a la possibilité de créer des utilisateurs de test pour le développement. Cette fonctionnalité est fournie à la fois dans l'interface graphique et dans l'API, vous permettant de créer et de supprimer des utilisateurs de test. En l'utilisant pour générer un utilisateur de test Facebook pour chaque test et exécuter le test, il est possible de prendre en charge l'automatisation des tests.

Flux d'automatisation des tests de l'API Graph

  1. Créez un utilisateur de test Facebook au début du test
  2. Test unitaire
  3. Supprimer les utilisateurs de test Facebook

échantillon

L'exemple de cas de test en python est le suivant.

sample.py


# coding:utf-8
# !/usr/bin/python
import facebook
import unittest
from unittest import TestCase


#Fonction à tester
#Postez simplement un message sur le mur
def post(message, fb_token):
    graph = facebook.GraphAPI(fb_token)
    graph.put_wall_post(message)


class Test(TestCase):
    #Utilisateur test Facebook
    FB_USER = None

    FB_APP_ID = 'YOUR_APP_ID'
    FB_APP_SECRET = 'YOUR_APP_SECRET'

    @classmethod
    def setUpClass(cls):
        super(Test, cls).setUpClass()

        #Créer un utilisateur de test
        app_token = facebook.GraphAPI().get_app_access_token(cls.FB_APP_ID,
                                                             cls.FB_APP_SECRET,
                                                             True)
        graph = facebook.GraphAPI(app_token)
        cls.FB_USER = graph.request(cls.FB_APP_ID + '/accounts/test-users', {
            'permissions': 'public_profile,user_photos,publish_actions'
        }, {},
                                    method='POST')

    @classmethod
    def tearDownClass(cls):
        super(Test, cls).tearDownClass()

        #Supprimer l'utilisateur de test
        app_token = facebook.GraphAPI().get_app_access_token(cls.FB_APP_ID,
                                                             cls.FB_APP_SECRET,
                                                             True)
        graph = facebook.GraphAPI(app_token)
        graph.request(cls.FB_USER['id'], {}, None, method='DELETE')

    #Testez que l'article peut être publié normalement
    def test_post(self):
        print Test.FB_USER
        post("hogehoge", Test.FB_USER['access_token'])


if __name__ == '__main__':
    unittest.main()

Résumé

J'ai mis l'exemple de code de python cette fois, mais comme l'API Graph est basée sur HTTP, je pense que le même mécanisme peut être créé quelle que soit la langue. Il est possible que les spécifications de l'API changent avant que vous ne le sachiez, c'est donc une bonne idée d'effectuer des tests réguliers sur le CI des fonctions qui utilisent l'API Graph.

Recommended Posts

Automatisez les tests d'applications Facebook avec les utilisateurs de test Facebook
Automatisez les tests d'applications pour smartphone avec Appium-Python Edition
Automatisez les tests python avec CircleCI
Automatisez les tests d'applications Windows avec Windows Application Driver-Python Edition
Automatisez les tests d'interface utilisateur avec l'API Selenium | Exploration de sites Web avec python
[Golang] Testez la fin de l'erreur de fonction "os.Exit (1)" avec testing.
[Blender] Automatisez les tests des modules complémentaires Blender avec GitHub et TravisCI
Jugement des nombres premiers avec Python
Renforcez avec le test de code ⑨
Renforcez avec le test de code ③
Renforcez avec le test de code ⑤
Renforcez avec le test de code ④
Jugement des nombres premiers avec python
Renforcez avec le test de code ②
Tester Elasticsearch avec python-tcptest
Renforcez avec le test de code ①
Renforcez avec le test de code ⑧
Renforcez avec le test de code ⑨