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
ผลต่างผลลัพธ์ควรได้รับการตรวจสอบการเปลี่ยนแปลงที่ไม่คาดคิด