Comment tester les attributs ajoutés par add_request_method de pyramid

pyramide add_request_method

Vous pouvez ajouter la propriété de requête avec la directive add_request_method de pyramid. (Dans le passé, il y avait une directive appelée add_request_property, mais elle est devenue obsolète à la hâte)

Effet de add_request_method

document: http://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html#pyramid.config.Configurator.add_request_method

Il y a deux options à garder à l'esprit:

--reify --Ajoute un attribut à la demande. Les attributs ajoutés sont mis en cache --property --Ajoute un attribut à la demande. L'attribut ajouté est calculé à chaque fois

Si rien n'est ajouté, il sera ajouté en tant que méthode. (De plus, si verify = True, il est automatiquement ajouté en tant que propriété)

## configuration
def includeme(config):
    ## request.get_foo()Peut être appelé comme
    config.add_request_method(get_foo, "get_foo")

    ## request.Peut être consulté en tant que foo
    config.add_request_method(get_foo2, "foo", reify=True)
    config.add_request_method(get_foo2, "foo", property=True)

Test des attributs ajoutés par add_request_method

tester. S'il s'agit d'un test unitaire, vous pouvez utiliser une simulation pour le texte. D'une manière ou d'une autre, cela peut être fait en utilisant un mannequin. Une histoire sur ce qu'il faut faire pendant le test d'intégration.

Où la directive définie par add_request_method est valide.

Regardons le code de la pyramide. La réponse se trouve dans pyramid / router.py. En gros, nous pouvons voir ce qui suit.

--add_request_method stocke une interface appelée IRequestExtensions dans la clé

Un exemple de comment rédiger un test

Un exemple de rédaction d'un test d'intégration en référence à ce qui précède Cette fois, définissez request.foo. Vérifiez simplement si vous pouvez l'obtenir avec request.foo.

# -*- coding:utf-8 -*-
import unittest


## definition

foo = object()

def get_foo(request):
    return foo

def includeme(config):
    config.add_request_method(get_foo, "foo", reify=True)


## test

class Tests(unittest.TestCase):
    def _makeOne(self, config, path="/"):
        from pyramid.request import Request
        from pyramid.interfaces import IRequestExtensions

        request = Request.blank(path)
        extensions = config.registry.getUtility(IRequestExtensions)
        request.registry = config.registry
        request._set_extensions(extensions)
        return request

    def test_it(self):
        from pyramid.testing import testConfig

        with testConfig() as config:
            config.include(includeme)

            ### request time
            request = self._makeOne(config, path="/")
            self.assertEqual(request.foo, foo)

Recommended Posts

Comment tester les attributs ajoutés par add_request_method de pyramid
Comment vérifier la version de Django
Paramètre pour entrer le contenu de la bibliothèque avec pytest et effectuer un test de débogage
__Getattr__ et __getattribute__ pour personnaliser l'acquisition des attributs d'objet par des points
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
Comment calculer la volatilité d'une marque
Comment trouver la zone du diagramme de Boronoi
Comment spécifier des attributs avec Mock of Python
Comment effacer les caractères générés par Python
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Remarque: Comment obtenir le dernier jour du mois avec python (ajouté le premier jour du mois)
Comment connaître le numéro de port du service xinetd
Comment exécuter le module Ansible ajouté dans Ansible Tower
Comment obtenir le nombre de chiffres en Python
La décision de scikit-learn Comment visualiser un modèle en bois
Comment savoir quelle version de Java Maven utilise
[Blender] Comment définir dynamiquement les sélections EnumProperty
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment frapper le document de Magic Function (Line Magic)
Comment accéder à la variable globale du module importé
[Selenium] Comment spécifier le chemin relatif de chromedriver?
Comment supprimer le préfixe du nom de base de données utilisé par pytest-django
Comment éviter l'étiquette de coupure du graphique créé par le module système de tracé à l'aide de matplotlib
[Ruby] Comment remplacer uniquement une partie de la chaîne de caractères correspondant à l'expression régulière?
Comment extraire les conditions (acquérir tous les éléments du Groupe qui remplissent les conditions) pour Groupe par Groupe
Comment augmenter la vitesse de traitement de l'acquisition de la position des sommets
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comment trouver le nombre optimal de clusters pour les k-moyennes
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Comment changer le fichier de configuration pour qu'il soit lu par Python
Comment utiliser le générateur
Comment calculer la quantité de calcul appris de ABC134-D
(Note) Comment passer le chemin de votre propre module
Comment vérifier si le contenu du dictionnaire est le même en Python par valeur de hachage
Comment résumer les résultats de FreeSurfer ~ aparc, aseg, wmparc ~
Comment exécuter automatiquement la fonction d'exportation de GCP Datastore
Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
Attacher au processus Python de la destination SSH et déboguer
Comment voir le contenu du fichier ipynb du notebook Jupyter
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Comment utiliser le décorateur
Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
Comment augmenter l'axe
Comment démarrer la première projection
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment obtenir la valeur en pixels du point à partir de l'image satellite en spécifiant la latitude et la longitude
Comment intercepter ou falsifier la communication SSL de l'appareil iOS réel par un proxy
[Python] Comment utiliser l'instruction for. Une méthode d'extraction en spécifiant une plage ou des conditions.
Comment obtenir et définir le nom du serveur NTP par DHCP
Comment déterminer l'existence d'un élément sélénium en Python
Comment modifier le niveau de journalisation d'Azure SDK pour Python
Comment implémenter du code Java en arrière-plan de Red Hat (Linux ONE)
Comment connaître la structure interne d'un objet en Python
Comment changer la couleur du seul bouton pressé avec Tkinter
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
[EC2] Comment installer Chrome et le contenu de chaque commande
Comment vérifier la taille de la mémoire d'une variable en Python
Créez le thème de Pythonista 3 comme Monokai (comment créer votre propre thème)
[Python] Comment obtenir le premier et le dernier jour du mois
Comment faire une commande pour lire le fichier de paramètres avec pyramide