TFF มีไลบรารีขนาดเล็กที่เรียกว่า golden ซึ่งช่วยให้เขียนและบำรุงรักษา Golden Tests ได้ง่าย
การทดสอบทองคำคืออะไร? ฉันควรใช้มันเมื่อใด?
Golden test จะใช้เมื่อคุณต้องการให้นักพัฒนาทราบว่าโค้ดของพวกเขาได้เปลี่ยนแปลงเอาท์พุตของฟังก์ชัน พวกเขาฝ่าฝืนคุณลักษณะหลายประการของการทดสอบหน่วยที่ดี โดยให้คำมั่นสัญญาเกี่ยวกับผลลัพธ์ที่แน่นอนของฟังก์ชัน แทนที่จะทดสอบชุดคุณสมบัติที่ชัดเจนและเป็นเอกสาร บางครั้งก็ไม่ชัดเจนว่าการเปลี่ยนแปลงใน Golden Output "คาดหวัง" หรือไม่ หรือเป็นการละเมิดคุณสมบัติบางอย่างที่ Golden Test กำหนดให้บังคับใช้หรือไม่ ด้วยเหตุนี้ การทดสอบหน่วยที่มีปัจจัยดีจึงมักจะดีกว่าการทดสอบระดับทอง
อย่างไรก็ตาม Golden Tests จะมีประโยชน์อย่างมากในการตรวจสอบความถูกต้องของเนื้อหาข้อความแสดงข้อผิดพลาด การวินิจฉัย หรือโค้ดที่สร้างขึ้น ในกรณีเหล่านี้ การทดสอบทองคำสามารถช่วยตรวจสอบความมั่นใจที่เป็นประโยชน์ว่าการเปลี่ยนแปลงใดๆ ในผลลัพธ์ที่สร้างขึ้นนั้น "ดูถูกต้อง"
ฉันจะเขียนการทดสอบโดยใช้ golden ได้อย่างไร
golden.check_string(filename, value) เป็นจุดเข้าหลักในไลบรารี golden มันจะตรวจสอบสตริง value กับเนื้อหาของไฟล์ที่มีองค์ประกอบเส้นทางสุดท้ายคือ filename ต้องระบุเส้นทางแบบเต็มไปยัง filename ผ่านทาง commandline --golden <path_to_file> อาร์กิวเมนต์ ในทำนองเดียวกัน ไฟล์เหล่านี้จะต้องพร้อมใช้งานสำหรับการทดสอบโดยใช้อาร์กิวเมนต์ data กับกฎ py_test BUILD ใช้ฟังก์ชัน location เพื่อสร้างเส้นทางสัมพันธ์ที่เหมาะสมที่ถูกต้อง:
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",
],
...
)
ตามธรรมเนียมแล้ว ไฟล์สีทองควรถูกวางไว้ในไดเรกทอรีพี่น้องที่มีชื่อเดียวกันกับเป้าหมายการทดสอบ โดยต่อท้ายด้วย _goldens :
path/
to/
some_test.py
some_test_goldens/
test_case_one.expected
...
test_case_last.expected
ฉันจะอัปเดตไฟล์ . .expected ได้อย่างไร
ไฟล์ .expected สามารถอัปเดตได้โดยการรันเป้าหมายการทดสอบที่ได้รับผลกระทบด้วยอาร์กิวเมนต์ --test_arg=--update_goldens --test_strategy=local ผลต่างผลลัพธ์ควรได้รับการตรวจสอบการเปลี่ยนแปลงที่ไม่คาดคิด