Robot Framework memiliki pendekatan berbeda dari alat yang mengutamakan kode. Alih-alih menulis pengujian sebagai kode program, Anda menulisnya sebagai tabel kata kunci yang mudah dibaca manusia. Untuk pengujian API, RequestsLibrary mengubah panggilan HTTP menjadi kata kunci seperti GET On Session, POST On Session, dan Status Should Be.
Panduan ini menunjukkan cara mengotomatisasi pengujian API dengan Robot Framework dari awal hingga siap dijalankan di CI. Anda akan menginstal framework, menulis test case pertama, mengelola sesi, melakukan assersi pada status code dan body JSON, lalu membuat kata kunci reusable agar suite lebih mudah dipelihara.
Apa itu Robot Framework dan mengapa cocok untuk pengujian API
Robot Framework adalah framework otomatisasi open source untuk test automation dan robotic process automation. Ciri utamanya adalah sintaks berbasis kata kunci: pengujian ditulis dalam tabel sederhana, sementara perilaku kompleks dibangun dari library keyword yang diimplementasikan dalam Python atau Java.
Untuk pengujian API, pendekatan ini berguna karena:
- Test case mudah dibaca oleh QA, developer, dan product owner.
- Keyword dapat digunakan ulang untuk login, setup data, validasi respons, dan cleanup.
- RequestsLibrary membungkus library
requestsPython dan mengekspos operasi HTTP sebagai keyword. - Library tambahan dapat dipakai untuk JSON, database, SSH, dan kebutuhan lain.
Jika struktur berbasis kata kunci masih baru bagi Anda, baca juga panduan tentang kerangka kerja pengujian otomatisasi.
Menginstal Robot Framework dan library-nya
Gunakan virtual environment agar dependensi proyek tetap terisolasi:
python -m venv .venv
source .venv/bin/activate
pip install robotframework
pip install robotframework-requests
pip install robotframework-jsonlibrary
Paket yang digunakan:
-
robotframework: engine utama dan test runner. -
robotframework-requests: RequestsLibrary untuk mengirim HTTP request. -
robotframework-jsonlibrary: helper untuk membaca dan memverifikasi data JSON.
Cek instalasi:
robot --version
Referensi sintaks resmi tersedia di Panduan pengguna Robot Framework.
Satu hal penting: Robot Framework sensitif terhadap whitespace. Keyword dan argumen dipisahkan oleh minimal dua spasi, bukan satu. Jika file .robot gagal diparse, periksa spacing terlebih dahulu.
Menulis pengujian API pertama
File Robot Framework menggunakan ekstensi .robot dan biasanya berisi beberapa section:
*** Settings ****** Variables ****** Test Cases ****** Keywords ***
Contoh test sederhana untuk endpoint user:
*** Settings ***
Library RequestsLibrary
Library Collections
*** Variables ***
${BASE_URL} https://api.example.com/v1
*** Test Cases ***
Get User Returns 200
Create Session api ${BASE_URL}
${response}= GET On Session api /users/42
Status Should Be 200 ${response}
Get User Returns Expected Email
Create Session api ${BASE_URL}
${response}= GET On Session api /users/42
${body}= Set Variable ${response.json()}
Should Be Equal As Integers ${body}[id] 42
Should Be Equal ${body}[status] active
Penjelasan singkat:
-
Library RequestsLibrarymengaktifkan keyword HTTP. -
Create Sessionmembuat sesi HTTP bernamaapi. -
GET On Sessionmengirim request ke endpoint relatif. -
Status Should Bememvalidasi status code. -
${response.json()}mengubah body respons menjadi objek JSON.
Jalankan test:
robot tests.robot
Robot Framework akan menghasilkan:
output.xmllog.htmlreport.html
Bekerja dengan sesi
Create Session tidak hanya menyimpan base URL. Sesi juga dapat menyimpan header default, cookie, dan autentikasi. Ini penting untuk API yang membutuhkan login.
Contoh alur login lalu membuat order:
*** Test Cases ***
Create Order With Authenticated Session
Create Session api ${BASE_URL}
${login}= POST On Session api /auth/login
... json={"email": "qa@example.com", "password": "test-pass"}
${token}= Set Variable ${login.json()}[token]
${headers}= Create Dictionary Authorization=Bearer ${token}
${order}= POST On Session api /orders
... json={"product_id": 7, "quantity": 2}
... headers=${headers}
Status Should Be 201 ${order}
Catatan implementasi:
-
...digunakan untuk melanjutkan keyword ke baris berikutnya. -
Create Dictionarymembuat map header. - Token dari respons login dipakai sebagai
Authorizationheader. - Sesi
apidapat digunakan lagi untuk request berikutnya.
Dokumentasi lengkap keyword sesi tersedia di referensi RequestsLibrary.
Melakukan assersi pada body respons
Status code saja tidak cukup. Untuk API test yang berguna, validasi juga struktur dan nilai body respons.
Contoh validasi JSON:
*** Settings ***
Library RequestsLibrary
Library JSONLibrary
Library Collections
*** Variables ***
${BASE_URL} https://api.example.com/v1
*** Test Cases ***
Order Response Has Correct Shape
Create Session api ${BASE_URL}
${response}= POST On Session api /orders
... json={"product_id": 7, "quantity": 2}
Status Should Be 201 ${response}
${body}= Set Variable ${response.json()}
Dictionary Should Contain Key ${body} total
Should Be Equal As Integers ${body}[quantity] 2
${status}= Get Value From Json ${body} $.status
Should Be Equal ${status}[0] pending
Keyword yang digunakan:
-
Dictionary Should Contain Key: memastikan field ada. -
Should Be Equal As Integers: membandingkan nilai numerik. -
Get Value From Json: mengambil data dengan JSONPath.
Untuk daftar validasi yang umum dijalankan pada respons API, lihat panduan tentang assersi API.
Membangun kata kunci yang dapat digunakan kembali
Jika Create Session dan login diulang di banyak test case, pindahkan ke custom keyword. Ini membuat suite lebih ringkas dan mudah diubah.
Contoh:
*** Keywords ***
Authenticate And Open Session
Create Session api ${BASE_URL}
${login}= POST On Session api /auth/login
... json={"email": "qa@example.com", "password": "test-pass"}
${token}= Set Variable ${login.json()}[token]
Set Suite Variable ${AUTH_HEADERS} Bearer ${token}
*** Test Cases ***
Create Order
Authenticate And Open Session
${headers}= Create Dictionary Authorization=${AUTH_HEADERS}
${order}= POST On Session api /orders
... json={"product_id": 7, "quantity": 2} headers=${headers}
Status Should Be 201 ${order}
Dengan custom keyword:
- Login hanya ditulis sekali.
- Perubahan endpoint login cukup diperbarui di satu tempat.
- Test case lebih fokus pada perilaku yang diverifikasi.
Untuk suite yang lebih besar, pindahkan keyword bersama ke file resource. Prinsip modular ini juga dibahas dalam panduan tentang menulis skrip pengujian otomatis.
Menggunakan file resource
File resource adalah file .robot tanpa test case. Biasanya berisi:
*** Variables ****** Keywords ***
Contoh common.robot:
*** Variables ***
${BASE_URL} https://api.example.com/v1
*** Keywords ***
Open API Session
Create Session api ${BASE_URL}
Impor dari file test:
*** Settings ***
Library RequestsLibrary
Resource common.robot
Struktur umum untuk proyek yang mulai membesar:
tests/
users.robot
orders.robot
resources/
common.robot
auth.robot
users_keywords.robot
orders_keywords.robot
Pemisahan test case dari logic pendukung adalah inti dari struktur berbasis keyword. Pendekatan ini membantu suite tetap mudah dibaca saat jumlah test bertambah. Lihat juga panduan tentang kerangka kerja pengujian otomatisasi.
Menjalankan Robot Framework di CI
Robot Framework cocok untuk CI karena:
- Dapat berjalan headless.
- Mengembalikan exit code non-zero saat test gagal.
- Menghasilkan report HTML dan XML secara otomatis.
Contoh command untuk CI:
robot --outputdir results --variable BASE_URL:https://staging.example.com/v1 tests/
Flag yang sering dipakai:
-
--outputdir: menentukan folder output. -
--variable: menyuntikkan nilai environment seperti base URL. -
--include: menjalankan test dengan tag tertentu. -
--exclude: mengecualikan test dengan tag tertentu.
Contoh menggunakan tag:
*** Test Cases ***
Get User Smoke Test
[Tags] smoke users
Create Session api ${BASE_URL}
${response}= GET On Session api /users/42
Status Should Be 200 ${response}
Jalankan hanya smoke test:
robot --include smoke --outputdir results tests/
Pola umum pipeline:
- Checkout repository.
- Setup Python.
- Install dependensi.
- Jalankan
robot. - Publish
log.html,report.html, danoutput.xmlsebagai artifact.
Ini mengikuti pola yang sama seperti panduan pengujian API di CI/CD.
Kapan platform API khusus lebih membantu
Robot Framework kuat ketika Anda membutuhkan test berbasis keyword yang mudah dibaca dan dapat dipelihara oleh tim dengan latar belakang teknis yang berbeda.
Namun, Robot Framework kurang praktis jika Anda juga membutuhkan:
- desain API,
- mocking,
- debugging request,
- validasi skema OpenAPI otomatis,
- manajemen environment visual,
- eksekusi data-driven tanpa banyak custom keyword.
Apidog menangani kebutuhan tersebut secara langsung. Apidog menyediakan pembangun pengujian visual, validasi skema OpenAPI otomatis, eksekusi berbasis data dari CSV dan JSON, manajemen environment, laporan HTML, serta runner CLI untuk CI.
Banyak tim menggunakan keduanya: Robot Framework untuk suite berbasis keyword yang mudah dibaca, dan Apidog untuk mendesain, melakukan mocking, debugging, dan menguji API secara lebih visual. Anda dapat mengunduh Apidog dan membuat suite pengujian API tanpa menulis library keyword sendiri.
Pertanyaan yang Sering Diajukan
Apakah Robot Framework hanya untuk pengujian UI?
Tidak. Robot Framework adalah framework otomatisasi generik. Dengan RequestsLibrary, Robot Framework dapat digunakan untuk pengujian API. Library lain juga tersedia untuk database, SSH, dan kebutuhan otomatisasi lainnya. Robot Framework populer untuk UI testing melalui SeleniumLibrary, tetapi API testing juga merupakan penggunaan yang umum.
Apa perbedaan antara Create Session dan request biasa?
Create Session membuat sesi HTTP bernama yang persisten. Sesi ini menyimpan base URL, header, cookie, dan autentikasi. Keyword seperti GET On Session dan POST On Session menggunakan kembali state tersebut. Request tanpa sesi tidak membawa cookie atau autentikasi antar panggilan, sehingga Anda harus mengirim ulang semuanya setiap kali.
Apakah saya perlu tahu Python untuk menggunakan Robot Framework?
Tidak untuk menulis pengujian. Sintaks tabel keyword dirancang agar dapat digunakan tanpa menulis kode Python. RequestsLibrary sudah menyediakan keyword HTTP yang siap dipakai. Python baru diperlukan jika Anda ingin membuat library keyword baru. Untuk banyak kebutuhan API testing, library yang ada sudah cukup.
Bagaimana perbandingan Robot Framework dengan pytest untuk pengujian API?
Pytest bersifat code-first dan cocok untuk tim Python yang ingin menulis test dekat dengan kode aplikasi. Robot Framework berbasis keyword dan cocok untuk tim yang mengutamakan test case yang mudah dibaca oleh berbagai peran. Keduanya dapat berjalan di CI dan menghasilkan laporan. Pilihan bergantung pada siapa yang akan menulis dan memelihara suite.
Dapatkah Robot Framework memvalidasi respons terhadap skema OpenAPI?
Tidak secara native. Anda dapat melakukan assersi field individual dengan keyword bawaan dan JSONLibrary. Library komunitas juga dapat menambahkan validasi skema. Jika validasi otomatis terhadap dokumen OpenAPI adalah bagian utama workflow Anda, platform seperti Apidog dapat mengurangi kebutuhan untuk merangkai dan memelihara banyak library sendiri.
Top comments (0)