Pytest
পাইটেস্ট একটি পাইথন পরীক্ষার কাঠামো যা পাইপি প্রকল্প থেকে উদ্ভূত হয়েছিল। এটি ইউনিট টেস্ট, ইন্টিগ্রেশন টেস্ট, এন্ড-টু-এন্ড টেস্ট এবং কার্যকরী পরীক্ষা সহ বিভিন্ন ধরনের সফ্টওয়্যার পরীক্ষা লিখতে ব্যবহার করা যেতে পারে। এর বৈশিষ্ট্যগুলির মধ্যে রয়েছে প্যারামিট্রাইজড টেস্টিং, ফিক্সচার এবং পুনরায় লেখার দাবি। পাইটেস্ট ফিক্সচারগুলি পরীক্ষার ক্ষেত্রে প্যারামিটার নামগুলি পাস করে পরীক্ষার জন্য প্রসঙ্গ সরবরাহ করে; এর প্যারামিট্রাইজেশন একাধিক সেট ইনপুট এবং আউটপুট পরীক্ষার জন্য ডুপ্লিকেট কোডকে সরিয়ে দেয়; এবং এর পুনর্লিখিত দাবি বিবৃতিগুলি ব্যর্থতার কারণগুলির জন্য বিস্তারিত আউটপুট সরবরাহ করে। পাইথনের অন্তর্নির্মিত মডিউল ইউনিটটেস্টের ত্রুটিগুলি সমাধানের জন্য তৃতীয় পক্ষের প্যাকেজগুলির প্রচেষ্টার অংশ হিসাবে হিস্ট্রি পাইটেস্ট তৈরি করা হয়েছিল। এটি পাইপাইয়ের অংশ হিসাবে উদ্ভূত হয়েছিল, যা স্ট্যান্ডার্ড সিপিথনের পাইথনের বিকল্প বাস্তবায়ন। 2003 সালের গোড়ার দিকে এটি তৈরি হওয়ার পর থেকে, পাইপাই পরীক্ষার উপর ব্যাপক জোর দিয়েছে। পাইপাই-এর নতুন লিখিত কোডের জন্য একক পরীক্ষা, বাগের জন্য রিগ্রেশন পরীক্ষা এবং সিপিথনের টেস্ট স্যুট ব্যবহার করে ইন্টিগ্রেশন পরীক্ষা ছিল। 2004 সালের মাঝামাঝি সময়ে, ইউটেস্ট নামে একটি পরীক্ষার কাঠামো আবির্ভূত হয় এবং পাইপাই-তে অবদানকারীরা বিদ্যমান পরীক্ষার কেসগুলিকে ইউটেস্টে রূপান্তর করতে শুরু করে। এদিকে, ইউরোপাইথন 2004-এ পরীক্ষার জন্য একটি পরিপূরক স্ট্যান্ডার্ড লাইব্রেরি, যার নাম এস. টি. ডি, উদ্ভাবিত হয়েছিল। এই প্যাকেজটি নীতিগুলি স্থাপন করেছিল, যেমন দাবি পুনর্লিখন, যা পরে পাইটেস্টে পরিণত হবে। 2004 সালের শেষের দিকে, এস. টি. ডি প্রকল্পের নাম পরিবর্তন করে পাই করা হয়, std.utest হয়ে যায় py.test, এবং পাই গ্রন্থাগারটি পাইপাই থেকে পৃথক করা হয়। 2010 সালের নভেম্বরে পাইটেস্ট 2.0 প্রকাশ করা হয় পাই থেকে আলাদা একটি প্যাকেজ হিসেবে। 2016 সালের আগস্ট পর্যন্ত এটি py.test নামে পরিচিত ছিল, কিন্তু পাইটেস্ট 3.0-এর মুক্তির পর প্রস্তাবিত কমান্ড লাইন এন্ট্রি পয়েন্ট পাইটেস্টে পরিণত হয়। জনপ্রিয়তার কারণে বিকাশকারী নিরাপত্তা প্ল্যাটফর্ম স্নাইক পাইটেস্টকে পাইথনের অন্যতম প্রধান বাস্তুতন্ত্র প্রকল্প হিসাবে শ্রেণীবদ্ধ করেছে। কিছু সুপরিচিত প্রকল্প যারা ইউনিটটেস্ট এবং নাক (আরেকটি পরীক্ষার প্যাকেজ) থেকে পাইটেস্টে স্যুইচ করেছে তাদের মধ্যে রয়েছে মোজিলা এবং ড্রপবক্স। বৈশিষ্ট্য প্যারামিট্রাইজড টেস্টিং পরীক্ষা ক্রিয়াকলাপের মাধ্যমে মান প্রেরণ এবং সঠিক আউটপুট পরীক্ষা করার জন্য সফ্টওয়্যার পরীক্ষার একটি সাধারণ প্যাটার্ন। অনেক ক্ষেত্রে, কার্যকারিতা পুঙ্খানুপুঙ্খভাবে পরীক্ষা করার জন্য, একজনকে ইনপুট/আউটপুটের একাধিক সেট পরীক্ষা করতে হবে এবং এই ধরনের কেসগুলি আলাদাভাবে লেখার ফলে ডুপ্লিকেট কোড তৈরি হবে কারণ বেশিরভাগ ক্রিয়া একই থাকবে, শুধুমাত্র ইনপুট/আউটপুট মানের মধ্যে পার্থক্য থাকবে। পাইটেস্টের প্যারামিট্রাইজড টেস্টিং বৈশিষ্ট্যটি বিভিন্ন পুনরাবৃত্তিকে একটি পরীক্ষার ক্ষেত্রে একত্রিত করে, তারপর এই পুনরাবৃত্তিগুলি চালিয়ে এবং প্রতিটি পরীক্ষার ফলাফল আলাদাভাবে প্রদর্শন করে এই ধরনের ডুপ্লিকেট কোডকে সরিয়ে দেয়। পাইটেস্টে প্যারামিট্রাইজড পরীক্ষাগুলি ডেকোরেটর দ্বারা চিহ্নিত করা হয়, যেখানে প্রথম প্যারামিটারটি কমা-বিচ্ছিন্ন নামের একটি স্ট্রিং এবং এটি পাস করার জন্য মানগুলির একটি তালিকা। যখন একাধিক নাম থাকে, তখন টুপলগুলির একটি তালিকা থাকবে যেখানে প্রতিটি টুপলের মানগুলি সূচক অনুসারে নামের সাথে মিলে যায়। এরপরে নামগুলি প্যারামিটার হিসাবে সজ্জাকর দ্বারা চিহ্নিত পরীক্ষার ফাংশনে পাস করা হয়। যখন পাইটেস্ট এই ধরনের সজ্জিত পরীক্ষা চালায়, তখন প্রতিটি জোড়া এবং তার নিজস্ব পরীক্ষার আউটপুট এবং অনন্য শনাক্তকারী সহ একটি পৃথক রান গঠন করে। সনাক্তকারীটি তখন পৃথক ডেটা জোড়া চালানোর জন্য ব্যবহার করা যেতে পারে। সফ্টওয়্যার পরীক্ষা লেখার সময়, দাবি বিবৃতি পরীক্ষার ব্যর্থতা যোগাযোগের একটি প্রাথমিক মাধ্যম, যেখানে প্রত্যাশিত মানগুলি প্রকৃত মানগুলির সাথে তুলনা করা হয়। যদিও পাইথনের অন্তর্নির্মিত দাবি কীওয়ার্ড শুধুমাত্র ব্যর্থতার ক্ষেত্রে কোনও বিবরণ ছাড়াই অ্যাসারশন এরর উত্থাপন করবে, পাইটেস্ট পাইথনের দাবি কীওয়ার্ডটি পুনর্লিখন করে এবং ব্যর্থতার কারণগুলির জন্য বিস্তারিত আউটপুট সরবরাহ করে, যেমন দাবি বিবৃতির অভিব্যক্তিগুলি মূল্যায়ন করে। ইউনিটটেস্টের (পরীক্ষার জন্য পাইথনের অন্তর্নির্মিত মডিউল) দৃঢ় বক্তব্যের সাথে একটি তুলনা করা যেতে পারেঃ এটি জাভা প্রোগ্রামিং ভাষার জুনিট দ্বারা অনুপ্রাণিত হওয়ার কারণে আরও বেশি শব্দযুক্ত বাক্য গঠন মেনে চলে, যেমন বেশিরভাগ ইউনিট টেস্টিং লাইব্রেরি; পাইথনের অন্তর্নির্মিত দাবি কলগুলি আটকানোর সময় পাইটেস্ট একই অর্জন করে, যা পদ্ধতিকে আরও সংক্ষিপ্ত করে তোলে। পাইটেস্টের পরীক্ষাগুলি যাচাই করে যে কম্পিউটার কোড এএএ নামে পরিচিত একটি ব্যবস্থা, কাজ এবং দাবি ক্রমে গঠিত পরীক্ষাগুলি ব্যবহার করে প্রত্যাশিত হিসাবে কাজ করে। এর ফিক্সচারগুলি পরীক্ষার জন্য প্রসঙ্গ সরবরাহ করে। এগুলি একটি সিস্টেমকে একটি পরিচিত অবস্থায় রাখতে এবং পরীক্ষার ক্রিয়াকলাপে ডেটা পাস করতে ব্যবহার করা যেতে পারে। ফিক্সচারগুলি কার্যত একটি পরীক্ষার শারীরবিজ্ঞানে সাজানো পর্যায় গঠন করে (এএএ, সাজানো, কাজ, দাবি করার জন্য সংক্ষিপ্ত)। পাইটেস্ট ফিক্সচারগুলি পরীক্ষার ক্ষেত্রে সেটআপ হিসাবে বা পরিষ্কার করার জন্য পরীক্ষার ক্ষেত্রে পরে চলতে পারে, তবে ইউনিটটেস্ট এবং নাক (অন্য তৃতীয় পক্ষের পাইথন পরীক্ষার কাঠামো) এর সেটআপ এবং টিয়ারডাউন থেকে আলাদা। পাইটেস্ট ফিক্সচার হিসাবে ঘোষিত ফাংশনগুলি সজ্জাকারী দ্বারা চিহ্নিত করা হয়, যার নামগুলি তারপর পরামিতি হিসাবে পরীক্ষার ফাংশনে পাস করা যেতে পারে। পাইটেস্ট যখন টেস্ট ফাংশনের পরামিতিগুলিতে ফিক্সচারগুলির নাম খুঁজে পায়, তখন এটি প্রথমে এই জাতীয় ফিক্সচারগুলির জন্য একই মডিউলে অনুসন্ধান করে এবং যদি না পাওয়া যায় তবে এটি conftest.py ফাইলে এই জাতীয় ফিক্সচারগুলি অনুসন্ধান করে। উদাহরণস্বরূপঃ ইম্পোর্ট পাইটেস্ট @pytest.fixture ডেফ ডেটাসেট (): "" কিছু ডেটা টেস্ট ফাংশনে ফেরত দিন "" রিটার্ন {'ডেটা1': 1, 'ডেটা2': 2} ডেফ টেস্ট _ ডেটাসেট (ডেটাসেট): "" ফিক্সচার মান পরীক্ষা করুন এবং নিশ্চিত করুন "" ডেটাসেট = = {'ডেটা1': 1, 'ডেটা2': 2} উপরের উদাহরণে, পাইটেস্ট ফিক্সচার একটি অভিধান ফেরত দেয়, যা তারপর দাবি করার জন্য টেস্ট ফাংশনে পাঠানো হয়। পরীক্ষার ক্ষেত্রে একই ফাইলের মধ্যে ফিক্সচার সনাক্তকরণ ছাড়াও, পাইটেস্ট ফিক্সচারগুলি পরীক্ষার ডিরেক্টরিতে conftest.py ফাইলে স্থাপন করা যেতে পারে। একাধিক conftest.py ফাইল থাকতে পারে, প্রতিটি পরীক্ষার ডিরেক্টরির মধ্যে রাখা হয় যাতে পরীক্ষার প্রতিটি উপসেটের জন্য ফিক্সচার সনাক্ত করা যায়। ফিক্সচার স্কোপ পাইটেস্টে, ফিক্সচার স্কোপগুলি ব্যবহারকারীকে নির্ধারণ করতে দেয় যে কখন একটি ফিক্সচার কল করা উচিত। চারটি ফিক্সচার স্কোপ রয়েছেঃ ফাংশন স্কোপ, ক্লাস স্কোপ, মডিউল স্কোপ এবং সেশন স্কোপ। ফাংশন-স্কোপড ফিক্সচারগুলি সমস্ত পাইটেস্ট ফিক্সচারের জন্য ডিফল্ট হয়, যা প্রতিবার একটি প্যারামিটার হিসাবে ফিক্সচার সহ একটি ফাংশনকে বলা হয়। একটি বিস্তৃত ফিক্সচারের সুযোগ নির্দিষ্ট করার লক্ষ্য হল পুনরাবৃত্ত ফিক্সচার কলগুলি বাদ দেওয়া, যা পরীক্ষার কার্যকারিতাকে ধীর করে দিতে পারে। ক্লাস-স্কোপড ফিক্সচারগুলি প্রতি পরীক্ষার ক্লাসে একবার ডাকা হয়, সেগুলি যতবারই ডাকা হোক না কেন, এবং অন্যান্য সমস্ত ক্ষেত্রের ক্ষেত্রে একই যুক্তি প্রযোজ্য। ফিক্সচার স্কোপ পরিবর্তন করার সময়, উদাহরণস্বরূপ, শুধুমাত্র ফিক্সচার ডেকোরেটরগুলিতে স্কোপ প্যারামিটার যুক্ত করতে হবে। টেস্ট ফিল্টারিং পাইটেস্টের আরেকটি বৈশিষ্ট্য হল পরীক্ষার মাধ্যমে ফিল্টার করার ক্ষমতা, যেখানে শুধুমাত্র পছন্দসই পরীক্ষাগুলি চালানোর জন্য নির্বাচন করা হয়, বা বিকাশকারীর পছন্দ মতো একটি নির্দিষ্ট উপায়ে আচরণ করা হয়। "কে" বিকল্পের সাথে (যেমন। ), পাইটেস্ট শুধুমাত্র এমন পরীক্ষা চালাবে যার নাম অন্তর্ভুক্ত। বিপরীতটি সত্য, যেখানে কেউ দৌড়াতে পারে, এবং পাইটেস্ট এমন সমস্ত পরীক্ষা চালাবে যার নাম অন্তর্ভুক্ত নয়। পাইটেস্টের চিহ্নিতকারীগুলি পরীক্ষার আচরণ পরিবর্তন করার পাশাপাশি পরীক্ষাগুলিও ফিল্টার করতে পারে। পাইটেস্টের চিহ্নিতকারীগুলি হল পাইথন সজ্জাকারী যা পরীক্ষার ফাংশনের উপরে স্থাপন করা সিনট্যাক্স দিয়ে শুরু হয়। বিভিন্ন নির্বিচারে নামকরণ করা মার্কারগুলির সাথে, কমান্ড লাইনে চলমান শুধুমাত্র এই ধরনের মার্কার দিয়ে সজ্জিত পরীক্ষাগুলি চালাবে। সমস্ত উপলব্ধ মার্কারগুলি তাদের বিবরণের সাথে তালিকাভুক্ত করা যেতে পারে; কাস্টম মার্কারগুলি ব্যবহারকারীদের দ্বারাও সংজ্ঞায়িত করা যেতে পারে এবং pytest.ini-এ নিবন্ধিত হতে পারে, যে ক্ষেত্রে অন্তর্নির্মিত মার্কারগুলির সাথে সেই কাস্টম মার্কারগুলিও তালিকাভুক্ত করা হবে। আরও দেখুন জেইউনিট, জাভা ডক্টেস্টের উপর ভিত্তি করে সুপরিচিত সফ্টওয়্যার পরীক্ষার কাঠামো, ডকস্ট্রিংয়ের জন্য পাইথনে সুপরিচিত পরীক্ষার কাঠামো ইউনিট পরীক্ষার কাঠামোর তালিকা রেফারেন্স বাহ্যিক লিঙ্ক https://pypi.python.org/pypi/pytest https://docs.pytest.org পাইথন (প্রোগ্রামিং ভাষা) উন্নয়ন সরঞ্জাম বিনামূল্যে সফ্টওয়্যার পরীক্ষার সরঞ্জাম ইউনিট পরীক্ষার কাঠামো