TFF شامل یک کتابخانه کوچک به نام golden
است که نوشتن و نگهداری تست های طلایی را آسان می کند.
تست های طلایی چیست؟ چه زمانی باید از آنها استفاده کنم؟
تستهای طلایی زمانی استفاده میشوند که میخواهید یک توسعهدهنده بداند که کد آنها خروجی یک تابع را تغییر داده است. آنها بسیاری از ویژگیهای تستهای واحد خوب را نقض میکنند، زیرا به جای آزمایش مجموعه خاصی از ویژگیهای واضح و مستند، وعدههایی درباره خروجیهای دقیق توابع میدهند. گاهی اوقات مشخص نیست که چه زمانی تغییر در یک خروجی طلایی "منتظر" است یا اینکه آیا این تغییر خاصیتی است که آزمایش طلایی برای اجرای آن انجام شده است. به این ترتیب، معمولاً یک آزمون واحد با فاکتور مناسب به یک آزمون طلایی ارجحیت دارد.
با این حال، تستهای طلایی میتوانند برای اعتبارسنجی محتوای دقیق پیامهای خطا، تشخیص یا کد تولید شده بسیار مفید باشند. در این موارد، تستهای طلایی میتواند یک بررسی اطمینان مفید باشد که هرگونه تغییر در خروجی تولید شده «درست به نظر میرسد».
چگونه با استفاده از golden
تست بنویسم؟
golden.check_string(filename, value)
نقطه ورودی اولیه به کتابخانه golden
است. رشته value
در برابر محتویات فایلی که آخرین عنصر مسیر آن filename
است بررسی می کند. مسیر کامل filename
باید از طریق آرگومان خط فرمان --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
به روز کرد. تفاوت حاصل باید برای تغییرات پیش بینی نشده بررسی شود.