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.