Saya perhatikan selama pengujian integrasi bahwa saya benar-benar bekerja pada kasus penggunaan berulang dengan API yang tenang (atau dalam antarmuka HTTP umum) saya periksa di sana-sini dengan bash + cURL.
Itu mulai terlihat sangat berantakan dan semakin sulit untuk dipertahankan. Mengapa mengirim kekacauan?
Kasus penggunaan umum adalah:
- Periksa apakah URL mengembalikan kode respons http, misalnya 200
- Periksa bahwa jenis konten cocok dengan beberapa MIME yang Anda butuhkan dalam kasus itu
- Periksa apakah konten yang dikembalikan cocok dengan beberapa pola, atau melewati prosedur validasi abstrak
Apa yang saya temukan sejauh ini dan mempertimbangkan opsi yang bisa diterapkan tanpa menciptakan kembali roda, adalah:
- coba dengan PyCurl - dengan harapan itu sepenuhnya mengimplementasikan semua opsi cURL esp. proxying tetapi juga switch lain yang mungkin saya butuhkan
- gunakan unit testng bawaan Python
Maka saya dapat memiliki, misalnya, satu tes unit per layanan yang ingin saya periksa:
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()
Apakah ini masuk akal atau ada alat yang lebih tinggi (tetapi tidak terlalu rumit untuk mengambil dan mengintegrasikan)?