Tutorial PyTest: Apa itu, Cara Install, Framework, Pernyataan
Apa itu PyTest?
Tes Py adalah kerangka pengujian yang memungkinkan pengguna untuk menulis kode pengujian menggunakan Python Bahasa pemrograman. Membantu Anda menulis kasus pengujian yang sederhana dan dapat diskalakan untuk basis data, API, atau UI. PyTest terutama digunakan untuk menulis pengujian untuk API. Membantu menulis pengujian mulai dari pengujian unit sederhana hingga pengujian fungsional yang kompleks.
Mengapa menggunakan PyTest?
Beberapa kelebihan pytest adalah
- Sangat mudah untuk memulai karena sintaksnya yang sederhana dan mudah.
- Dapat menjalankan tes secara paralel.
- Dapat menjalankan tes tertentu atau subset tes
- Deteksi pengujian secara otomatis
- Lewati tes
- Open source
Cara menginstal PyTest
Berikut ini adalah proses tentang cara menginstal PyTest:
Langkah 1) Anda dapat menginstal pytest dengan
pip install pytest==2.9.1
Setelah instalasi selesai, Anda dapat mengonfirmasinya dengan
py.test -h
Ini akan menampilkan bantuan
PyTest Dasar Pertama
Sekarang, kita akan mempelajari cara menggunakan Pytest dengan contoh dasar PyTest.
Buat folder study_pytest. Kami akan membuat file pengujian kami di dalam folder ini.
Silakan navigasikan ke folder itu di baris perintah Anda.
Buat file bernama test_sample1.py di dalam folder
Tambahkan kode di bawah ini ke dalamnya dan simpan
import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"
Jalankan pengujian menggunakan perintah
py.test
Anda akan mendapatkan output sebagai
test_sample1.py F. ============================================== FAILURES ======================================== ____________________________________________ test_sample1 ______________________________________ def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" > assert x == y,"test failed" E AssertionError: test failed E assert 5 == 6 test_sample1.py:6: AssertionError
Di sini, di test_sample1.py F.
F mengatakan kegagalan
Titik (.) menyatakan sukses.
Di bagian kegagalan, Anda dapat melihat metode yang gagal dan garis kegagalan. Di sini x==y berarti 5==6 yang salah.
Selanjutnya dalam tutorial PyTest ini, kita akan belajar tentang pernyataan di PyTest.
Pernyataan di PyTest
Pernyataan Pytest adalah pemeriksaan yang mengembalikan status Benar atau Salah. Di dalam Python Pytest, jika suatu pernyataan gagal dalam suatu metode pengujian, maka eksekusi metode tersebut dihentikan di sana. Kode yang tersisa dalam metode pengujian tersebut tidak dijalankan, dan pernyataan Pytest akan dilanjutkan dengan metode pengujian berikutnya.
Contoh Pernyataan Pytest:
assert "hello" == "Hai" is an assertion failure. assert 4==4 is a successful assertion assert True is a successful assertion assert False is an assertion failure.
Mempertimbangkan
assert x == y,"test failed because x=" + str(x) + " y=" + str(y)
Tempatkan kode ini di test_file1_method1() alih-alih pernyataan
assert x == y,"test failed"
Menjalankan tes akan memberikan kegagalan sebagai AssertionError: pengujian gagal x=5 y=6
Bagaimana PyTest Mengidentifikasi File Pengujian dan Metode Pengujian
Secara default, pytest hanya mengidentifikasi nama file yang dimulai dengan uji_ atau diakhiri dengan _uji sebagai file pengujian. Kita dapat secara eksplisit menyebutkan nama file lainnya (dijelaskan nanti). Pytest mengharuskan nama metode pengujian dimulai dengan "tes.” Semua nama metode lainnya akan diabaikan meskipun kami secara eksplisit meminta untuk menjalankan metode tersebut.
Lihat beberapa contoh nama file pytest yang valid dan tidak valid
test_login.py - valid login_test.py - valid testlogin.py -invalid logintest.py -invalid
Catatan: Ya, kami dapat secara eksplisit meminta pytest untuk memilih testlogin.py dan logintest.py
Lihat beberapa contoh metode pengujian pytest yang valid dan tidak valid
def test_file1_method1(): - valid def testfile1_method1(): - valid def file1_method1(): - invalid
Catatan: Meskipun kami secara eksplisit menyebutkan file1_method1() pytest tidak akan menjalankan metode ini.
Jalankan Beberapa Tes Dari File Tertentu dan Banyak File
Saat ini, di dalam folder study_pytest, kami memiliki file test_sample1.py. Misalkan kita memiliki banyak file, misalnya test_sample2.py, test_sample3.py. Untuk menjalankan semua tes dari semua file di folder dan subfolder kita hanya perlu menjalankan perintah pytest.
py.test
Ini akan menjalankan semua nama file yang dimulai dengan test_ dan nama file yang diakhiri dengan _test di folder itu dan subfolder di bawah folder itu.
Untuk menjalankan pengujian hanya dari file tertentu, kita dapat menggunakan py.test
py.test test_sample1.py
Jalankan subset Keseluruhan Tes dengan PyTest
Terkadang kita tidak ingin menjalankan seluruh rangkaian pengujian. Pytest memungkinkan kita menjalankan tes tertentu. Kita bisa melakukannya dengan 2 cara
- Pengelompokan nama pengujian berdasarkan pencocokan substring
- Pengelompokan tes berdasarkan penanda
Kami sudah memiliki test_sample1.py. Buat file test_sample2.py dan tambahkan kode di bawah ini ke dalamnya
def test_file2_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed because x=" + str(x) + " y=" + str(y) def test_file2_method2(): x=5 y=6 assert x+1 == y,"test failed"
Jadi kita punya saat ini
• test_sample1.py • test_file1_method1() • test_file1_method2() • test_sample2.py • test_file2_method1() • test_file2_method2()
Opsi 1) Jalankan pengujian dengan pencocokan substring
Di sini untuk menjalankan semua tes yang memiliki metode1 dalam namanya, kita harus menjalankannya
py.test -k method1 -v -k <expression> is used to represent the substring to match -v increases the verbosity
Jadi menjalankan py.test -k method1 -v akan memberi Anda hasil berikut
test_sample2.py::test_file2_method1 FAILED test_sample1.py::test_file1_method1 FAILED ============================================== FAILURES ============================================== _________________________________________ test_file2_method1 _________________________________________ def test_file2_method1(): x=5 y=6 assert x+1 == y,"test failed" > assert x == y,"test failed because x=" + str(x) + " y=" + str(y) E AssertionError: test failed because x=5 y=6 E assert 5 == 6 test_sample2.py:5: AssertionError _________________________________________ test_file1_method1 _________________________________________ @pytest.mark.only def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" > assert x == y,"test failed because x=" + str(x) + " y=" + str(y) E AssertionError: test failed because x=5 y=6 E assert 5 == 6 test_sample1.py:8: AssertionError ================================= 2 tests deselected by '-kmethod1' ================================== =============================== 2 failed, 2 deselected in 0.02 seconds ===============================
Di sini Anda dapat melihat menjelang akhir 2 tes tidak dipilih oleh '-kmethod1' yaitu test_file1_method2 dan test_file2_method2
Coba jalankan dengan berbagai kombinasi seperti: -
py.test -k method -v - will run all the four methods py.test -k methods -v – will not run any test as there is no test name matches the substring 'methods'
Opsi 2) Jalankan pengujian berdasarkan penanda
Pytest memungkinkan kita menyetel berbagai atribut untuk metode pengujian menggunakan penanda pytest, @pytest.mark . Untuk menggunakan marker pada file pengujian, kita perlu mengimpor pytest pada file pengujian.
Di sini kita akan menerapkan nama penanda yang berbeda untuk menguji metode dan menjalankan pengujian spesifik berdasarkan nama penanda. Kita dapat menentukan penanda pada setiap nama tes dengan menggunakan
@pytest.mark.<name>.
Kami mendefinisikan penanda set1 dan set2 pada metode pengujian, dan kami akan menjalankan pengujian menggunakan nama penanda. Perbarui file pengujian dengan kode berikut
tes_sample1.py
import pytest @pytest.mark.set1 def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed because x=" + str(x) + " y=" + str(y) @pytest.mark.set2 def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"
tes_sample2.py
import pytest @pytest.mark.set1 def test_file2_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed because x=" + str(x) + " y=" + str(y) @pytest.mark.set1 def test_file2_method2(): x=5 y=6 assert x+1 == y,"test failed"
Kita dapat menjalankan tes yang ditandai dengan
py.test -m <name> -m <name> mentions the marker name
Jalankan py.test -m set1. Ini akan menjalankan metode test_file1_method1, test_file2_method1, test_file2_method2.
Menjalankan py.test -m set2 akan menjalankan test_file1_method2.
Jalankan Tes secara Paralel dengan Pytest
Biasanya, rangkaian pengujian akan memiliki banyak file pengujian dan ratusan metode pengujian yang memerlukan banyak waktu untuk dijalankan. Pytest memungkinkan kita menjalankan pengujian secara paralel.
Untuk itu kita perlu menginstall pytest-xdist terlebih dahulu dengan cara running
pip install pytest-xdist
Anda dapat menjalankan pengujian sekarang
py.test -n 4
-N menjalankan pengujian dengan menggunakan banyak pekerja. Pada perintah di atas, akan ada 4 pekerja yang menjalankan pengujian.
Perlengkapan Pytest
Perlengkapan digunakan ketika kita ingin menjalankan beberapa kode sebelum setiap metode pengujian. Jadi, alih-alih mengulangi kode yang sama di setiap pengujian, kami mendefinisikan perlengkapan. Biasanya, perlengkapan digunakan untuk menginisialisasi koneksi database, melewatkan basis, dll
Suatu metode ditandai sebagai perlengkapan Pytest dengan menandai dengan
@pytest.fixture
Metode pengujian dapat menggunakan perlengkapan Pytest dengan menyebutkan perlengkapan tersebut sebagai parameter masukan.
Buat file baru test_basic_fixture.py dengan kode berikut
import pytest @pytest.fixture def supply_AA_BB_CC(): aa=25 bb =35 cc=45 return [aa,bb,cc] def test_comparewithAA(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed" def test_comparewithBB(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[1]==zz,"bb and zz comparison failed" def test_comparewithCC(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed"
Sini
- Kami memiliki perlengkapan bernama supply_AA_BB_CC. Metode ini akan mengembalikan daftar 3 nilai.
- Kami memiliki 3 metode pengujian yang membandingkan masing-masing nilai.
Masing-masing fungsi pengujian memiliki argumen masukan yang namanya cocok dengan perlengkapan yang tersedia. Pytest kemudian memanggil metode perlengkapan yang sesuai dan nilai yang dikembalikan akan disimpan dalam argumen input, berikut daftarnya [25,35,45]. Sekarang item daftar digunakan dalam metode pengujian untuk perbandingan.
Sekarang jalankan tes dan lihat hasilnya
py.test test_basic_fixture
test_basic_fixture.py::test_comparewithAA FAILED test_basic_fixture.py::test_comparewithBB PASSED test_basic_fixture.py::test_comparewithCC FAILED ============================================== FAILURES ============================================== _________________________________________ test_comparewithAA _________________________________________ supply_AA_BB_CC = [25, 35, 45] def test_comparewithAA(supply_AA_BB_CC): zz=35 > assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed" E AssertionError: aa and zz comparison failed E assert 25 == 35 test_basic_fixture.py:10: AssertionError _________________________________________ test_comparewithCC _________________________________________ supply_AA_BB_CC = [25, 35, 45] def test_comparewithCC(supply_AA_BB_CC): zz=35 > assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed" E AssertionError: cc and zz comparison failed E assert 45 == 35 test_basic_fixture.py:16: AssertionError ================================= 2 failed, 1 passed in 0.05 seconds =================================
Tes test_comparewithBB dilewati sejak zz=BB=35, dan 2 tes sisanya gagal.
Metode perlengkapan hanya memiliki cakupan dalam file pengujian yang ditentukan. Jika kami mencoba mengakses perlengkapan di beberapa file pengujian lain, kami akan mendapatkan pesan kesalahan yang mengatakan perlengkapan 'supply_AA_BB_CC' tidak ditemukan untuk metode pengujian di file lain.
Untuk menggunakan perlengkapan yang sama terhadap beberapa file pengujian, kami akan membuat metode perlengkapan dalam file bernama conftest.py.
Mari kita lihat contoh PyTest di bawah ini. Buat 3 file conftest.py, test_basic_fixture.py, test_basic_fixture2.py dengan kode berikut
konflik.py
import pytest @pytest.fixture def supply_AA_BB_CC(): aa=25 bb =35 cc=45 return [aa,bb,cc]
tes_basic_fixture.py
import pytest def test_comparewithAA(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed" def test_comparewithBB(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[1]==zz,"bb and zz comparison failed" def test_comparewithCC(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed"
tes_basic_fixture2.py
import pytest def test_comparewithAA_file2(supply_AA_BB_CC): zz=25 assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed" def test_comparewithBB_file2(supply_AA_BB_CC): zz=25 assert supply_AA_BB_CC[1]==zz,"bb and zz comparison failed" def test_comparewithCC_file2(supply_AA_BB_CC): zz=25 assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed"
pytest akan mencari perlengkapannya di file test terlebih dahulu dan jika tidak ditemukan akan mencari di conftest.py
Jalankan pengujian dengan py.test -k test_comparewith -v untuk mendapatkan hasil seperti di bawah ini
test_basic_fixture.py::test_comparewithAA FAILED test_basic_fixture.py::test_comparewithBB PASSED test_basic_fixture.py::test_comparewithCC FAILED test_basic_fixture2.py::test_comparewithAA_file2 PASSED test_basic_fixture2.py::test_comparewithBB_file2 FAILED test_basic_fixture2.py::test_comparewithCC_file2 FAILED
Uji Parameterisasi Pytest
Tujuan membuat parameter pengujian adalah menjalankan pengujian terhadap beberapa rangkaian argumen. Kita dapat melakukannya dengan @pytest.mark.parametrize.
Kita akan melihatnya dengan contoh PyTest di bawah ini. Di sini kita akan meneruskan 3 argumen ke metode pengujian. Metode pengujian ini akan menambahkan 2 argumen pertama dan membandingkannya dengan argumen ke-3.
Buat file pengujian test_addition.py dengan kode di bawah ini
import pytest @pytest.mark.parametrize("input1, input2, output",[(5,5,10),(3,5,12)]) def test_add(input1, input2, output): assert input1+input2 == output,"failed"
Di sini metode pengujian menerima 3 argumen: input1, input2, output. Metode ini menambahkan input1 dan input2 dan membandingkannya dengan output.
Mari kita jalankan pengujian dengan py.test -k test_add -v dan lihat hasilnya
test_addition.py::test_add[5-5-10] PASSED test_addition.py::test_add[3-5-12] FAILED ============================================== FAILURES ============================================== __________________________________________ test_add[3-5-12] __________________________________________ input1 = 3, input2 = 5, output = 12 @pytest.mark.parametrize("input1, input2, output",[(5,5,10),(3,5,12)]) def test_add(input1, input2, output): > assert input1+input2 == output,"failed" E AssertionError: failed E assert (3 + 5) == 12 test_addition.py:5: AssertionError
Anda dapat melihat pengujian dijalankan 2 kali – satu pemeriksaan 5+5 ==10 dan pemeriksaan lainnya 3+5 ==12
test_addition.py::test_add[5-5-10] LULUS
test_addition.py::test_add[3-5-12] GAGAL
Pytest Xfail / Lewati Tes
Akan ada beberapa situasi di mana kita tidak ingin menjalankan tes, atau a Kasus cobaan tidak relevan untuk waktu tertentu. Dalam situasi tersebut, kami memiliki opsi untuk Xgagal dalam pengujian atau melewatkan pengujian
Tes xfailed akan dijalankan, tetapi tidak akan dihitung sebagai bagian tes yang gagal atau lulus. Tidak akan ada jejak balik yang ditampilkan jika pengujian tersebut gagal. Kita dapat xgagal dalam pengujian menggunakan
@pytest.mark.xgagal.
Melewatkan pengujian berarti pengujian tidak akan dijalankan. Kita dapat melewati tes menggunakan
@pytest.mark.skip.
Edit test_addition.py dengan kode di bawah ini
import pytest @pytest.mark.skip def test_add_1(): assert 100+200 == 400,"failed" @pytest.mark.skip def test_add_2(): assert 100+200 == 300,"failed" @pytest.mark.xfail def test_add_3(): assert 15+13 == 28,"failed" @pytest.mark.xfail def test_add_4(): assert 15+13 == 100,"failed" def test_add_5(): assert 3+2 == 5,"failed" def test_add_6(): assert 3+2 == 6,"failed"
Sini
- test_add_1 dan test_add_2 dilewati dan tidak akan dieksekusi.
- test_add_3 dan test_add_4 xgagal. Pengujian ini akan dijalankan dan akan menjadi bagian dari pengujian xfailed(saat pengujian gagal) atau xpassed(saat lulus pengujian). Tidak akan ada jejak balik atas kegagalan.
- test_add_5 dan test_add_6 akan dieksekusi dan test_add_6 akan melaporkan kegagalan dengan traceback saat test_add_5 lolos
Jalankan pengujian dengan py.test test_addition.py -v dan lihat hasilnya
test_addition.py::test_add_1 SKIPPED test_addition.py::test_add_2 SKIPPED test_addition.py::test_add_3 XPASS test_addition.py::test_add_4 xfail test_addition.py::test_add_5 PASSED test_addition.py::test_add_6 FAILED ============================================== FAILURES ============================================== _____________________________________________ test_add_6 _____________________________________________ def test_add_6(): > assert 3+2 == 6,"failed" E AssertionError: failed E assert (3 + 2) == 6 test_addition.py:24: AssertionError ================ 1 failed, 1 passed, 2 skipped, 1 xfailed, 1 xpassed in 0.07 seconds =================
XML Hasil
Kami dapat membuat hasil pengujian dalam format XML yang dapat kami masukkan ke server Integrasi Berkelanjutan untuk diproses lebih lanjut dan sebagainya. Hal ini dapat dilakukan dengan
py.test test_sample1.py -v –junitxml=”hasil.xml”
Hasil.xml akan mencatat hasil eksekusi tes. Temukan contoh result.xml di bawah ini
<?xml version="1.0" encoding="UTF-8"?> <testsuite errors="0" failures="1" name="pytest" skips="0" tests="2" time="0.046"> <testcase classname="test_sample1" file="test_sample1.py" line="3" name="test_file1_method1" time="0.001384973526"> <failure message="AssertionError:test failed because x=5 y=6 assert 5 ==6"> @pytest.mark.set1 def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" > assert x == y,"test failed because x=" + str(x) + " y=" + str(y) E AssertionError: test failed because x=5 y=6 E assert 5 == 6 test_sample1.py:9: AssertionError </failure> </testcase> <testcase classname="test_sample1" file="test_sample1.py" line="10" name="test_file1_method2" time="0.000830173492432" /> </testsuite>
Dari kita dapat melihat total dua pengujian yang salah satunya gagal. Di bawah ini Anda dapat melihat detail mengenai setiap pengujian yang dijalankan di bawah menandai.
Kerangka Pytest Menguji API
Sekarang kita akan membuat kerangka pytest kecil untuk menguji API. API yang digunakan di sini adalah yang gratis https://reqres.in/. Situs web ini hanya menyediakan API yang dapat diuji. Situs web ini tidak menyimpan data kami.
Di sini kami akan menulis beberapa tes untuk
- mencantumkan beberapa pengguna
- masuk dengan pengguna
Buat file di bawah ini dengan kode yang diberikan
conftest.py – memiliki perlengkapan yang akan menyediakan url dasar untuk semua metode pengujian
import pytest @pytest.fixture def supply_url(): return "https://reqres.in/api"
test_list_user.py – berisi metode pengujian untuk membuat daftar pengguna yang valid dan tidak valid
- test_list_valid_user menguji pengambilan pengguna yang valid dan memverifikasi responsnya
- test_list_invaliduser menguji pengambilan pengguna yang tidak valid dan memverifikasi responsnya
import pytest import requests import json @pytest.mark.parametrize("userid, firstname",[(1,"George"),(2,"Janet")]) def test_list_valid_user(supply_url,userid,firstname): url = supply_url + "/users/" + str(userid) resp = requests.get(url) j = json.loads(resp.text) assert resp.status_code == 200, resp.text assert j['data']['id'] == userid, resp.text assert j['data']['first_name'] == firstname, resp.text def test_list_invaliduser(supply_url): url = supply_url + "/users/50" resp = requests.get(url) assert resp.status_code == 404, resp.text
test_login_user.py – berisi metode pengujian untuk menguji fungsionalitas login.
- test_login_valid menguji validitas upaya login dengan email dan kata sandi
- test_login_no_password menguji upaya login yang tidak valid tanpa memberikan kata sandi
- test_login_no_email menguji upaya login yang tidak valid tanpa meneruskan email.
import pytest import requests import json def test_login_valid(supply_url): url = supply_url + "/login/" data = {'email':'test@test.com','password':'something'} resp = requests.post(url, data=data) j = json.loads(resp.text) assert resp.status_code == 200, resp.text assert j['token'] == "QpwL5tke4Pnpja7X", resp.text def test_login_no_password(supply_url): url = supply_url + "/login/" data = {'email':'test@test.com'} resp = requests.post(url, data=data) j = json.loads(resp.text) assert resp.status_code == 400, resp.text assert j['error'] == "Missing password", resp.text def test_login_no_email(supply_url): url = supply_url + "/login/" data = {} resp = requests.post(url, data=data) j = json.loads(resp.text) assert resp.status_code == 400, resp.text assert j['error'] == "Missing email or username", resp.text
Jalankan pengujian menggunakan py.test -v
Lihat hasilnya sebagai
test_list_user.py::test_list_valid_user[1-George] PASSED test_list_user.py::test_list_valid_user[2-Janet] PASSED test_list_user.py::test_list_invaliduser PASSED test_login_user.py::test_login_valid PASSED test_login_user.py::test_login_no_password PASSED test_login_user.py::test_login_no_email PASSED
Perbarui pengujian dan coba berbagai keluaran
Kesimpulan
Dalam tutorial PyTest ini, kami membahasnya
- Instal pytest menggunakan pemasangan pip tes py=2.9.1
- Program pytest sederhana dan jalankan dengan perintah py.test.
- Pernyataan pernyataan, tegaskan x==y, akan menghasilkan Benar atau Salah.
- Bagaimana pytest mengidentifikasi file dan metode pengujian.
- Uji file dimulai dengan uji_ atau diakhiri dengan _uji
- Metode pengujian dimulai dengan uji
- Perintah py.test akan menjalankan semua file pengujian di folder dan subfolder tersebut. Untuk menjalankan file tertentu, kita bisa menggunakan perintah py.test
- Jalankan subset metode pengujian
- Pengelompokan nama pengujian berdasarkan substring match.py.test -k -v akan menjalankan semua tes yang ada atas namanya.
- Jalankan pengujian dengan penanda. Tandai pengujian menggunakan @pytest.mark. dan jalankan tes menggunakan pytest -m untuk menjalankan tes yang ditandai sebagai .
- Jalankan tes secara paralel
- Instal pytest-xdist menggunakan pip install pytest-xdist
- Jalankan pengujian menggunakan py.test -n NUM dengan NUM adalah jumlah pekerja
- Membuat metode perlengkapan untuk menjalankan kode sebelum setiap pengujian dengan menandai metode tersebut dengan @pytest.fixture
- Ruang lingkup metode perlengkapan ada di dalam file yang ditentukan.
- Metode perlengkapan dapat diakses di beberapa file pengujian dengan mendefinisikannya di file conftest.py.
- Metode pengujian dapat mengakses perlengkapan Pytest dengan menggunakannya sebagai argumen masukan.
- Pengujian parameterisasi untuk menjalankannya terhadap beberapa set input.
@pytest.mark.parametrize(“masukan1, masukan2, keluaran”,[(5,5,10),(3,5,12)])
def tes_tambahkan(masukan1, masukan2, keluaran):
tegaskan input1+input2 == output,”gagal”
akan menjalankan tes dengan input (5,5,10) dan (3,5,12) - Lewati/xfail pengujian menggunakan @pytets.mark.skip dan @pytest.mark.xfail
- Buat hasil pengujian dalam format XML yang mencakup detail pengujian yang dijalankan menggunakan py.test test_sample1.py -v –junitxml=”result.xml”
- Contoh kerangka kerja pytest untuk menguji API