[PYTHON] So testen Sie die Attribute, die durch add_request_method of pyramid hinzugefügt wurden

Pyramide add_request_method

Sie können die Eigenschaft der Anforderung mit der Direktive add_request_method der Pyramide hinzufügen. (In der Vergangenheit gab es eine Direktive namens add_request_property, die jedoch in Eile veraltet war.)

Auswirkung von add_request_method

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

Es gibt zwei Möglichkeiten, die Sie berücksichtigen sollten:

--reify - Fügen Sie der Anforderung ein Attribut hinzu. Die hinzugefügten Attribute werden zwischengespeichert --property - Fügt der Anforderung ein Attribut hinzu. Das hinzugefügte Attribut wird jedes Mal berechnet

Wenn nichts angehängt ist, wird es als Methode hinzugefügt. (Wenn verify = True ist, wird es automatisch als Eigenschaft hinzugefügt.)

## configuration
def includeme(config):
    ## request.get_foo()Kann als bezeichnet werden
    config.add_request_method(get_foo, "get_foo")

    ## request.Kann als foo zugegriffen werden
    config.add_request_method(get_foo2, "foo", reify=True)
    config.add_request_method(get_foo2, "foo", property=True)

Test der durch add_request_method hinzugefügten Attribute

Prüfung. Wenn es sich um einen Komponententest handelt, können Sie Mock für Text verwenden. Irgendwie kann es mit Dummy gemacht werden. Eine Geschichte darüber, was während des Integrationstests zu tun ist.

Wobei die durch add_request_method definierte Direktive gültig ist.

Schauen wir uns den Code der Pyramide an. Die Antwort ist in pyramid / router.py. Grob gesagt können wir Folgendes sehen.

--add_request_method speichert eine Schnittstelle namens IRequestExtensions im Schlüssel

Ein Beispiel für das Schreiben eines Tests

Ein Beispiel für das Schreiben eines Integrationstests unter Bezugnahme auf das oben Gesagte Setzen Sie diesmal request.foo. Überprüfen Sie einfach, ob Sie es mit request.foo erhalten können.

# -*- 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

So testen Sie die Attribute, die durch add_request_method of pyramid hinzugefügt wurden
So überprüfen Sie die Version von Django
Einstellung, um den Inhalt der Bibliothek mit pytest einzugeben und einen Debug-Test durchzuführen
__Getattr__ und __getattribute__, um die Erfassung von Objektattributen durch Punkte anzupassen
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
So berechnen Sie die Volatilität einer Marke
So finden Sie den Bereich des Boronoi-Diagramms
So legen Sie Attribute mit Mock of Python fest
So löschen Sie die von Python ausgegebenen Zeichen
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
Wie man die Portnummer des xinetd-Dienstes kennt
Ausführen des in Ansible Tower hinzugefügten Ansible-Moduls
So ermitteln Sie die Anzahl der Stellen in Python
Die Entscheidung von scikit-learn Wie man ein Holzmodell visualisiert
So finden Sie heraus, welche Version von Java Maven verwendet wird
[Blender] So legen Sie die Auswahlelemente von EnumProperty dynamisch fest
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
Wie man das Dokument der magischen Funktion (Linienmagie) trifft
So greifen Sie auf die globale Variable des importierten Moduls zu
[Selen] Wie wird der relative Pfad des Chromedriver angegeben?
So heben Sie den von pytest-django verwendeten DB-Namen auf
So vermeiden Sie die Cut-Off-Beschriftung des Diagramms, das vom Plotsystemmodul mit matplotlib erstellt wurde
[Ruby] Wie ersetze ich nur einen Teil der Zeichenkette, der mit dem regulären Ausdruck übereinstimmt?
So extrahieren Sie Bedingungen (erwerben Sie alle Elemente der Gruppe, die die Bedingungen erfüllen) für Gruppe für Gruppe
So erhöhen Sie die Verarbeitungsgeschwindigkeit der Erfassung der Scheitelpunktposition
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
So finden Sie die optimale Anzahl von Clustern für k-means
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So wechseln Sie die Konfigurationsdatei, die von Python gelesen werden soll
Verwendung des Generators
Berechnen des aus ABC134-D gelernten Rechenaufwands
(Hinweis) So übergeben Sie den Pfad Ihres eigenen Moduls
So überprüfen Sie anhand des Hashwerts, ob der Inhalt des Wörterbuchs in Python identisch ist
Wie man die Ergebnisse von FreeSurfer ~ aparc, aseg, wmparc ~ zusammenfasst
So führen Sie die Exportfunktion des GCP-Datenspeichers automatisch aus
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
Anhängen an den Python-Prozess des SSH-Ziels und Debuggen
So sehen Sie den Inhalt der ipynb-Datei des Jupyter-Notizbuchs
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Wie benutzt man den Dekorateur?
Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet
So erhöhen Sie die Achse
So starten Sie die erste Projektion
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So erhalten Sie den Pixelwert des Punkts aus dem Satellitenbild, indem Sie den Breiten- und Längengrad angeben
Abfangen oder Manipulieren der SSL-Kommunikation des tatsächlichen iOS-Geräts durch einen Proxy
[Python] Verwendung der for-Anweisung. Eine Methode zum Extrahieren durch Angabe eines Bereichs oder von Bedingungen.
So erhalten Sie den NTP-Servernamen per DHCP und legen ihn fest
So bestimmen Sie die Existenz eines Selenelements in Python
So ändern Sie die Protokollstufe von Azure SDK für Python
So implementieren Sie Java-Code im Hintergrund von Red Hat (Linux ONE)
Wie Sie die interne Struktur eines Objekts in Python kennen
So ändern Sie die Farbe nur der mit Tkinter gedrückten Taste
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
So überprüfen Sie die Speichergröße einer Variablen in Python
Erstellen Sie das Thema von Pythonista 3 wie Monokai (wie Sie Ihr eigenes Thema erstellen)
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide