Altın Testi

TFF, altın testlerin yazılmasını ve bakımını kolaylaştıran, golden adı verilen küçük bir kütüphane içerir.

Altın testler nelerdir? Bunları ne zaman kullanmalıyım?

Altın testleri, geliştiricinin kodunun bir işlevin çıktısını değiştirdiğini bilmesini istediğinizde kullanılır. Belirli bir dizi açık, belgelenmiş özelliği test etmek yerine, işlevlerin tam çıktıları hakkında vaatlerde bulunarak iyi birim testlerinin birçok özelliğini ihlal ederler. Bazen altın çıktıda bir değişikliğin ne zaman "beklendiği" veya altın testin zorunlu kıldığı bazı özellikleri ihlal edip etmediği açık değildir. Bu nedenle, iyi faktörlenmiş bir birim testi genellikle altın teste tercih edilir.

Ancak altın testler, hata mesajlarının, teşhislerin veya oluşturulan kodun tam içeriğini doğrulamak için son derece yararlı olabilir. Bu durumlarda, altın testler, oluşturulan çıktıda yapılan değişikliklerin "doğru göründüğüne" dair yararlı bir güven kontrolü olabilir.

golden kullanarak testleri nasıl yazmalıyım?

golden.check_string(filename, value) golden kitaplığa birincil giriş noktasıdır. value dizesini, son yol öğesi filename olan bir dosyanın içeriğiyle karşılaştırır. filename adının tam yolu bir komut satırı --golden <path_to_file> bağımsız değişkeni aracılığıyla sağlanmalıdır. Benzer şekilde, bu dosyaların py_test BUILD kuralına ilişkin data argümanı kullanılarak testlere sunulması gerekir. Doğru ve uygun bir göreli yol oluşturmak için location işlevini kullanın:

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",
  ],
  ...
)

Geleneksel olarak, altın dosyalar test hedefleriyle aynı adı taşıyan ve sonuna _goldens eki eklenmiş bir kardeş dizine yerleştirilmelidir:

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

.expected dosyalarını nasıl güncellerim?

.expected dosyalar, etkilenen test hedefi --test_arg=--update_goldens --test_strategy=local argümanlarıyla çalıştırılarak güncellenebilir. Ortaya çıkan fark, beklenmeyen değişiklikler açısından kontrol edilmelidir.