Jika program yang Anda buat memerlukan input dari user, berikut cara melakukan simulasi input dalam testing.
Pertama kita harus import library yang dibutuhkan, yaitu mock dari unittest.
Sedikit informasi, unittest adalah library standard untuk testing, sama seperti pytest. Cukup popular juga, kelebihannya adalah library standard, jadi kita tidak perlu melakukan instalasi.
Untuk melakukan simulasi input berikut perintah mock yang digunakan:
mock.patch('builtins.input', return_value = 100)
Perintah mock diatas akan melakukan simulasi user input dengan nilai 100.
Untuk aplikasinya pada program testing, mari kita buat contoh program calculator sederhana.
Fungsi calculator akan menghitung nilai 100 dibagi dengan nilai yang diambil dari list x[idx], dimana nilai idx adalah angka yang diinput oleh user.
Untuk fungsi test, kita gunakan perintah mock untuk simulasi user input dengan return value adalah 1.
Berarti fungsi test akan menghitung 100 / x[1] = 100 / 2 = 50.
from unittest import mock
def calculator():
x = [1, 2, 3, 4, 5]
idx = int(input("enter a value: "))
result = 100 / x[idx]
return result
def test_third_1():
with mock.patch('builtins.input', return_value = 1):
assert calculator() == 50
Jika kita jalankan pytest third.py (nama file yang digunakan pada tutorial adalah third.py).
PS F:\Project\learnpytest> pytest third.py
============================ test session starts ============================
platform win32 -- Python 3.8.5, pytest-6.2.4, py-1.9.0, pluggy-0.13.1
rootdir: F:\Project\learnpytest, configfile: pytest.ini
plugins: dash-1.19.0
collected 1 item
third.py . [100%]
============================= 1 passed in 0.59s ============================
Sesuai ekspetasi, testing passed, yang ditunjukan dengan tanda . hijau.