Während des Integrationstests ist mir aufgefallen, dass ich tatsächlich an wiederkehrenden Anwendungsfällen mit restful APIs (oder generell HTTP-Schnittstellen) arbeite, die ich hier und da mit bash + cURL überprüfe.
Es sieht ziemlich chaotisch aus und ist schwerer zu warten. Warum Chaos ausliefern?
Typische Anwendungsfälle sind:
- Überprüfen Sie, ob eine URL den http-Antwortcode zurückgibt, z. B. 200
- Überprüfen Sie, ob der Inhaltstyp mit einem MIME-Wert übereinstimmt, den Sie in diesem Fall benötigen
- Überprüfen Sie, ob der zurückgegebene Inhalt einem bestimmten Muster entspricht, oder bestehen Sie eine abstrakte Validierungsprozedur
Was ich bisher gefunden habe und für eine praktikable Option halte, ohne das Rad neu zu erfinden, ist:
- Probieren Sie es mit PyCurl aus - in der Hoffnung, dass es alle cURL-Optionen vollständig implementiert, insb. Proxy aber auch andere Schalter, die ich möglicherweise benötige
- benutze Pythons eingebaute Unit testng
Dann könnte ich zum Beispiel einen Unit Test pro Service haben, den ich überprüfen möchte:
import unittest, pycurl
class TestService (unittest.TestCase):
def test_1(self):
self.assertEqual(pycurl.returncode("some_url"), 200)
def test_2(self):
self.assertTrue(pycurl.response("some_url").matches ("xxx") )
def test_3(self):
self.assertTrue (pycurl.ContentType("some_url").equal("xxx"))
if __name__ == '__main__':
unittest.main()
Ist dies sinnvoll oder gibt es ein höherwertigeres (aber nicht zu komplexes, um es aufzunehmen und zu integrieren) Werkzeug?