গোল্ডেন টেস্টিং

TFF-এ golden নামক একটি ছোট লাইব্রেরি রয়েছে যা সোনালী পরীক্ষা লেখা এবং বজায় রাখা সহজ করে তোলে।

গোল্ডেন পরীক্ষা কি? আমি কখন তাদের ব্যবহার করা উচিত?

গোল্ডেন টেস্টগুলি ব্যবহার করা হয় যখন আপনি একজন বিকাশকারীকে জানতে চান যে তাদের কোড একটি ফাংশনের আউটপুট পরিবর্তন করেছে। তারা ভাল ইউনিট পরীক্ষার অনেক বৈশিষ্ট্য লঙ্ঘন করে যে তারা স্পষ্ট, নথিভুক্ত বৈশিষ্ট্যগুলির একটি নির্দিষ্ট সেট পরীক্ষা করার পরিবর্তে ফাংশনের সঠিক আউটপুট সম্পর্কে প্রতিশ্রুতি দেয়। কখনও কখনও এটি স্পষ্ট হয় না যে কখন একটি সোনালী আউটপুটে পরিবর্তন "প্রত্যাশিত" হয় বা এটি এমন কিছু সম্পত্তি লঙ্ঘন করছে কিনা যা গোল্ডেন টেস্ট প্রয়োগ করতে বলেছিল। যেমন, একটি ভাল ফ্যাক্টরযুক্ত ইউনিট পরীক্ষা সাধারণত একটি গোল্ডেন পরীক্ষার চেয়ে পছন্দনীয়।

যাইহোক, গোল্ডেন টেস্টগুলি ত্রুটি বার্তা, ডায়াগনস্টিকস, বা জেনারেট করা কোডের সঠিক বিষয়বস্তু যাচাই করার জন্য অত্যন্ত কার্যকর হতে পারে। এই ক্ষেত্রে, সুবর্ণ পরীক্ষাগুলি একটি সহায়ক আত্মবিশ্বাসের পরীক্ষা হতে পারে যে উত্পন্ন আউটপুটে যে কোনও পরিবর্তন "ঠিক দেখায়।"

আমি কিভাবে golden ব্যবহার করে পরীক্ষা লিখব?

golden.check_string(filename, value) হল golden লাইব্রেরির প্রাথমিক এন্ট্রিপয়েন্ট। এটি একটি ফাইলের বিষয়বস্তুর বিরুদ্ধে value স্ট্রিং পরীক্ষা করবে যার শেষ পাথ উপাদান হল filenamefilename সম্পূর্ণ পাথ একটি কমান্ডলাইন --golden <path_to_file> আর্গুমেন্টের মাধ্যমে প্রদান করতে হবে। একইভাবে, এই ফাইলগুলিকে অবশ্যই py_test BUILD নিয়মে data আর্গুমেন্ট ব্যবহার করে পরীক্ষার জন্য উপলব্ধ করা উচিত। একটি সঠিক উপযুক্ত আপেক্ষিক পথ তৈরি করতে 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 । ফলাফলের পার্থক্য অপ্রত্যাশিত পরিবর্তনের জন্য পরীক্ষা করা উচিত।