Durante i test di integrazione ho notato che in realtà lavoro su casi d'uso ricorrenti con API riposanti (o in interfacce HTTP generali) che controllo qua e là con bash + cURL.
Inizia a sembrare piuttosto disordinato e diventa più difficile da mantenere. Perché consegnare pasticcio?
I casi d'uso tipici sono:
- Verifica che un URL restituisca un codice di risposta http, ad esempio 200
- Verifica che il tipo di contenuto corrisponda ad alcuni MIME necessari in quel caso
- Verificare che il contenuto restituito corrisponda a qualche modello o che passi una procedura di convalida astratta
Quello che ho trovato finora e considero un'opzione praticabile senza reinventare la ruota, è:
- provalo con PyCurl - nella speranza implementa completamente tutte le opzioni cURL esp. proxy ma anche altri switch di cui potrei aver bisogno
- usa il test unit integrato di Python
Quindi potrei avere, ad esempio, un test unitario per servizio che vorrei controllare:
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()
Ha senso o esiste una strumentazione di alto livello (ma non troppo complessa per essere acquisita e integrata)?