Penggunaan fungsi ASSERT di PHP

Pada artikel sebelumnya kita telah mempelajari tentang instalasi python, request library dan melakukan pemanggilan HTTP dengan metode GET secara terprogram melalui kode python, walaupun belum ada test disana, karena artikelnya cukup panjang hehehe, jadi kita lanjutkan disini.  

Oh ya, artikel ini adalah salah satu dari rangkaian tutorial cara membuat RestfulAPI Test Framework dengan bahasa pemrograman Python, artikel lainnya bisa kalian lihat disini

  • Pelajaran 1. Penyiapan dan identifikasi permintaan HTTP
  • Pelajaran 2. Menguji dengan menegaskan dan pytest
  • Pelajaran 3. Struktur awal kerangka pengujian dan pustaka pernyataan lancar
  • Pelajaran 4. Refactoring dan basis pembantu
  • Pelajaran 5. Pelaporan
  • Tambahan. Penambahan validasi skema dan menjalankan pengujian secara paralel

Bagaimana cara menguji respons API secara terprogram dengan python?

Pada umumnya semua bahasa pemrograman memiliki statement yang digunakan untuk menguji kebenaran suatu ekspresi di dalam program, dan akan memicu error saat kondisi salah, di python kita mengenalnya sebagai `assert`, namun sebelumnya kita menggunakan fungsi `assert`, alangkah baiknya jika kita mengetahui cara menguji aplikasi dengan cara yang sederhana (atau setara dengan assert)

if not condition:
    raise AssertionError()

Saat menggunakan `assert`, kode di atas akan serupa

assert condition
_

Jika diperhatikan, assert tidak memiliki tanda kurung seperti fungsi pada umumnya, karena itu adalah statement bukan fungsi, oia assert juga bisa memiliki pesan opsional, jadi saat kita memprogram kita bisa menyisipkan kalimat tambahan yang akan mempermudah proses debugging, untuk contoh

assert response_ok, "Oh no! Server /api/airports is not responding OK!"

Nah, bagaimana penerapannya di kode kita sebelumnya?

import requests

response = requests.get('https://airportgap.dev-tester.com/api/airports')
assert response.status_code == 200

Penjelasan kode

  • baris 1-3 => kita mengimpor pustaka permintaan dan mengakses server dengan metode GET lalu menyimpannya ke dalam variabel `response`
  • baris 4 => kita test apakah ada respon. status 200, jika tidak maka program akan error

Oia, satu hal yang perlu diperhatikan, jika assert bernilai False, program akan BERHENTI karena kesalahan, sehingga baris setelah assert failed tidak akan dijalankan. hal ini dapat menimbulkan efek samping jika kita perlu melakukan teardown atau proses tertentu setelah test selesai (misalnya pada web testing, teardown untuk menutup browser setelah sesi test selesai)


Pytest?

Pytest adalah pustaka pengujian dengan python, mirip dengan junit atau testNG di java, saya telah menulis detail lengkapnya di artikel terpisah di https. //fachrul. id/pelajari-pytest-framework-1/

Oke kegunaan pytest di project kita kali ini adalah agar kode test yang kita tulis rapi dan report di command line lebih rapi ketika terjadi error

Untuk menggunakan pytest kita perlu menginstal library terlebih dahulu dengan mengetikkan perintah `pip install pytest` di terminal/cmd Anda

contoh implementasi pytest

import requests


def test_get_all_airports():
response = requests.get('https://airportgap.dev-tester.com/api/airports')
data = response.json().get('data')

assert response.status_code == 200
assert len(data) > 5
_

apa yang berbeda dalam kode kita?

  • permintaan impor => kami memulai permintaan perpustakaan impor sebelum digunakan di baris berikutnya
  • def test_get_all_airports(). => kita membuat sebuah function yang diawali dengan def kemudian nama function tersebut, dan penamaan function ini harus memiliki awalan test_xxxx agar dapat dikenali sebagai test case oleh pytest nantinya
  • response = requests.get() => kita melakukan permintaan data pada webserver dan ditampung ke dalam variable response
  • data = respon. json(). get('data') => disini kita akan merantai proses dari parsing respon berupa json ke tipe data dictionary di python, dan dilanjutkan dengan cara. get('data') artinya kita akan mengambil nilai dari atribut "data" di kamus tadi
  • menegaskan tanggapan. status_code == 200 => kita melakukan testing dengan mengevaluasi status code http response harus sama dengan 200
  • assert len(data) > 5 => fungsi len digunakan untuk menghitung jumlah data dalam sebuah list/kumpulan, nah disini maksudnya kita testing jumlah data bandara harus lebih dari 5

Lalu bagaimana cara menjalankan kodenya?

oia untuk pytest ada sedikit perbedaan cara menjalankan kode/file test, jika sebelumnya kita menjalankan kode di terminal/cmd dengan `python file_name. py` sekarang menjadi `nama file pytest. py`

perhatikan bahwa keluaran di konsol sekarang berbeda dengan materi sebelumnya di pelajaran 1, bukan?

oia agar lebih informatif Anda dapat menambahkan -v (verbose) ke argumen pytest menjadi seperti ini `pytest -v file_name. py`

Jika kode tidak berjalan dengan pytest, yang perlu diperhatikan adalah nama metode (def) harus dimulai dengan test_xxx

 

Salam

Detail lengkapnya ada di video pengkodean langsung ini

Artikel ini diperbarui pada 8 Agustus 2021

  • otomatisasi-python
  • tutorial

Facebook Twitter LinkedIn

Penggunaan fungsi ASSERT di PHP

Fachrul Choliludin

Peneliti kualitas perangkat lunak yang andal Sering menulis artikel tentang cara menjadi Insinyur Pengembangan Kualitas Perangkat Lunak dalam Pengujian, QA Jaminan Kualitas, Pengujian Agile, atau belajar membuat otomatisasi pengujian dengan Selenium, Appium, pengujian API