Pengujian Emas

TFF menyertakan perpustakaan kecil bernama golden yang memudahkan penulisan dan pemeliharaan pengujian emas.

Apa itu ujian emas? Kapan saya harus menggunakannya?

Tes emas digunakan ketika Anda ingin pengembang mengetahui bahwa kode mereka mengubah output suatu fungsi. Mereka melanggar banyak karakteristik pengujian unit yang baik karena mereka memberikan janji tentang keluaran fungsi yang tepat, daripada menguji serangkaian properti tertentu yang jelas dan terdokumentasi. Terkadang tidak jelas kapan perubahan pada keluaran emas "diharapkan" atau apakah perubahan tersebut melanggar beberapa properti yang ingin ditegakkan oleh pengujian emas. Oleh karena itu, pengujian unit yang terfaktor dengan baik biasanya lebih disukai daripada pengujian emas.

Namun, pengujian emas bisa sangat berguna untuk memvalidasi isi pesan kesalahan, diagnostik, atau kode yang dihasilkan. Dalam kasus ini, pengujian emas dapat menjadi pemeriksaan keyakinan yang berguna bahwa setiap perubahan pada keluaran yang dihasilkan "terlihat benar".

Bagaimana cara menulis tes menggunakan golden ?

golden.check_string(filename, value) adalah titik masuk utama ke perpustakaan golden . Ini akan memeriksa string value terhadap konten file yang elemen jalur terakhirnya adalah filename . Jalur lengkap ke filename harus diberikan melalui argumen baris perintah --golden <path_to_file> . Demikian pula, file-file ini harus tersedia untuk pengujian menggunakan argumen data pada aturan py_test BUILD. Gunakan fungsi location untuk menghasilkan jalur relatif yang benar dan sesuai:

py_string_test(
  ...
  args = [
    "--golden",
    "$(location path/to/first_test_output.expected)",
    ...
    "--golden",
    "$(location path/to/last_test_output.expected)",
  ],
  data = [
    "path/to/first_test_output.expected",
    ...
    "path/to/last_test_output.expected",
  ],
  ...
)

Sesuai ketentuan, file emas harus ditempatkan di direktori saudara dengan nama yang sama dengan target pengujiannya, dengan akhiran _goldens :

path/
  to/
    some_test.py
    some_test_goldens/
      test_case_one.expected
      ...
      test_case_last.expected

Bagaimana cara memperbarui file .expected ?

File .expected dapat diperbarui dengan menjalankan target pengujian yang terpengaruh dengan argumen --test_arg=--update_goldens --test_strategy=local . Perbedaan yang dihasilkan harus diperiksa untuk melihat perubahan yang tidak terduga.