পাইথনে ইউনিট পরীক্ষা লেখার পদ্ধতি: আমি কীভাবে শুরু করব? [বন্ধ]


533

আমি পাইথনে আমার প্রথম যথাযথ প্রকল্পটি শেষ করেছি এবং এখন আমার কাজ এটির জন্য পরীক্ষা লিখতে।

যেহেতু এই প্রথম আমি কোনও প্রকল্প করেছি, এটিই এই প্রথম পরীক্ষার জন্য লিখছি writing

প্রশ্ন হল, আমি কীভাবে শুরু করব? আমার কোনো ধারণাই নেই. লেখার পরীক্ষা দিয়ে শুরু করার জন্য আমি যে কোনও ডকুমেন্টেশন / টিউটোরিয়াল / লিংক / বইয়ের দিকে আমাকে নির্দেশ করতে পারি (এবং আমি বিশেষত ইউনিট পরীক্ষার অনুমান)

এই বিষয়ে যে কোনও পরামর্শকে স্বাগত জানানো হবে।


4
আপনি যদি ইচ্ছা করেন তবে পরীক্ষা লিখতে দেরি হবে না। অভিযোগকারী সকলের জন্য কারও চেয়ে বেশি হওয়া ভাল ...
জিজ্ঞাসা

1
: এখানে একটি ভালো পরীক্ষা চালিত উন্নয়ন বই অনলাইন বিনামূল্যে জন্য বাইরে যে chimera.labs.oreilly.com/books/1234000000754/index.html
উইল

4
ভাল সম্পদ আমি হোঁচট খেয়েছি https://www.jeffknupp.com/blog/2013/12/09/improve-your-python- বোঝা- unit- testing/ । পাইথনের নবাগত হিসাবে আমি এটি বোধগম্যরূপে পেলাম।
ফেরি করুন

2
: Hitchhiker নির্দেশিকা পাইথন ইউনিট পরীক্ষার জন্য সরঞ্জামের একটি সংক্ষিপ্ত হয়েছে python-guide-pt-br.readthedocs.io/en/latest/writing/tests
আন্তন Tarasenko

পূর্ববর্তী মন্তব্যটিকে উচ্চতর রেটিং দেওয়া উচিত, যেহেতু গাইডটিতে github.com/kennethreitz/samplemod এ একটি উদাহরণ কোড সংগ্রহও রয়েছে যা শুরু করার জন্যও দুর্দান্ত জায়গা।
setempler

উত্তর:


101

আপনি যদি ইউনিটেটস ব্যবহার করার ক্ষেত্রে একেবারে নতুন হন তবে শেখার সহজ পদ্ধতির প্রায়শই সেরা। সেই ভিত্তিতে আমি ডিফল্ট মডিউলটিরpy.test পরিবর্তে ব্যবহারের পরামর্শ দিই ।unittest

এই দুটি উদাহরণ বিবেচনা করুন, যা একই কাজ করে:

উদাহরণ 1 (ইউনিটেস্ট):

import unittest

class LearningCase(unittest.TestCase):
    def test_starting_out(self):
        self.assertEqual(1, 1)

def main():
    unittest.main()

if __name__ == "__main__":
    main()

উদাহরণ 2 (পাইস্ট):

def test_starting_out():
    assert 1 == 1

ধরে নিচ্ছি যে উভয় ফাইলের নাম দেওয়া হয়েছে test_unittesting.py, আমরা কীভাবে পরীক্ষা চালাব?

উদাহরণ 1 (ইউনিটেস্ট):

cd /path/to/dir/
python test_unittesting.py

উদাহরণ 2 (পাইস্ট):

cd /path/to/dir/
py.test

7
আমি (একাধিক স্থানে py.test সরলতা শুনেছেন যে docs.python-guide.org/en/latest/writing/tests/#py-test , docs.python.org/3.5/library/unittest.html#module -উনতমতম , jeffknupp.com/blog/2013/12/09/… ) কেন unit-testএখনও স্ট্যান্ডার্ড লাইব্রেরিতে অন্তর্ভুক্ত করা হয়, যদি py.testএবং noseআরও সহজ ইন্টারফেসের সাথে একই কার্যকারিতা সরবরাহ করে? এটা শুধু অনুন্নত সহাবস্থানযোগ্যতা প্রদান করা হয়, অথবা নেই unittestকিছু সুবিধার আছে py.testএবং nosetestপ্রদান করতে পারেন না?
alpha_989

@ alpha_989 স্ট্যান্ডার্ড পাইথন গ্রন্থাগারটি উপলব্ধ সেরা সরঞ্জামগুলি ধারণ করার উদ্দেশ্যে নয়। পিপিআই এর জন্য এটি। স্ট্যান্ডার্ড unittestপ্যাকেজটি এখনও যথেষ্ট ভাল। এটি স্ট্যান্ডার্ড যার অর্থ এটি ভাল কাজ করার জন্য একধরণের গ্যারান্টিযুক্ত। শেষ অবধি, যে কেউ আপনার কোড ব্যবহার করে তাদের অতিরিক্ত প্যাকেজ ইনস্টল করার দরকার নেই।
জিয়েকোমন

72

পাইথন ফ্রি পাইথন বইয়ের ডাইভ ইন্ট পাইথনে ইউনিট পরীক্ষার একটি অধ্যায় রয়েছে যা আপনাকে দরকারী মনে হতে পারে।

আপনি যদি আধুনিক অনুশীলনগুলি অনুসরণ করেন তবে আপনার প্রকল্পটি লেখার সময় আপনার সম্ভবত পরীক্ষাগুলি লেখা উচিত এবং আপনার প্রকল্পটি প্রায় শেষ না হওয়া পর্যন্ত অপেক্ষা করবেন না।

এখনই দেরীতে হলেও এখন আপনি পরবর্তী সময়ের জন্য জানবেন know :)


13
আমি এখনও বলব যে আপনি যদি রিফ্যাক্টর কোড করতে চান যার ইউনিট পরীক্ষা নেই তবে আপনার প্রথমে এর জন্য ইউনিট পরীক্ষা লিখতে হবে
হুবার্ট কারিও

9
হ্যাঁ, প্রথমবারের মতো ইউনিটসেটে আগত প্রচুর লোকেরা পুরানো হাত থেকে "ভাল, এটি আপনার বর্তমান প্রকল্পের জন্য একদম দেরি" বলে মনে হচ্ছে: এমনকি যদি তারা আসলে এটি বোঝাতে চেয়েছিল তবে তা নয় যা নবজাতক শুনতে পান । এটি গাছ লাগানোর বিষয়ে চীনা প্রবাদটির মতো: পরীক্ষা শুরু করার সর্বোত্তম সময়টি একটি প্রকল্পের শুরুতে; পরীক্ষা শুরু করার দ্বিতীয় সেরা সময় এখন!
জেপি

4
পাইথন লিঙ্কে ডুব ভাঙা ... :-(
স্কট স্কাইলস 19:38

40

আমার মতে, তিনটি অজগর টেস্টিং ফ্রেমওয়ার্ক রয়েছে যা চেক আউট করা ভাল।
ইউনিটেস্ট - মডিউলটি সমস্ত পাইথন ডিস্ট্রিবিউশন
নাকের সাথে স্ট্যান্ডার্ড আসে - ইউনিটেস্ট টেস্ট চালাতে পারে এবং এতে কম বয়লারপ্লেট থাকে।
পাইস্ট - এছাড়াও ইউনিটটেস্ট পরীক্ষা চালায়, কম বয়লারপ্লেট রয়েছে, ভাল প্রতিবেদন রয়েছে, প্রচুর শীতল অতিরিক্ত বৈশিষ্ট্য রয়েছে

এগুলির একটি ভাল তুলনা পেতে, http://pythontesting.net/start- এখানে প্রতিটি পরিচিতির মাধ্যমে পড়ুন ।
ফিক্সচার সম্পর্কিত প্রসারিত নিবন্ধগুলিও রয়েছে এবং আরও অনেক কিছু।


35

ইউনিটেস্টের জন্য ডকগুলি শুরু করার জন্য ভাল জায়গা হবে।

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


যদি আপনি পরীক্ষা-চালিত উন্নয়ন চান তবে এটি কোনও খারাপ জিনিস নয়। আমার ক্ষেত্রে, আমি বিদ্যমান কোডটি দেখছি এবং পরীক্ষাগুলি পাস করার জন্য লিখে এবং টুইটের মাধ্যমে এটি বোঝার চেষ্টা করছি এবং এটি আমাকে শুরু করেছিল unittest। জিনিসগুলি হ্যাং হয়ে যাওয়ার পরে, আমি এটিকে আরও উন্নয়নের জন্য ব্যবহার করব, পাশাপাশি প্রতিটি ইউনিটের পরীক্ষার ক্ষেত্রে সংখ্যা বাড়িয়ে তুলব।
আইসড ওয়াটার

27

ইউনিটেস্ট স্ট্যান্ডার্ড লাইব্রেরি সহ আসে, তবে আমি আপনাকে নস্টকেটস ফিরিয়ে আনব

" পরীক্ষা সহজ করার জন্য নাক এককতম প্রসারিত করে। "

আমি আপনাকে পাইলট পুনরুদ্ধার করতে হবে

" পাইগন উত্স কোডটি বিশ্লেষণ করে ত্রুটিযুক্ত মানের বাগ এবং চিহ্নগুলি সন্ধান করছে " "


8

অন্যরা ইতিমধ্যে উত্তর হিসাবে, ইউনিট পরীক্ষা লিখতে দেরি হলেও খুব বেশি দেরি হয়নি। আপনার কোডটি পরীক্ষামূলক কিনা তা প্রশ্ন । প্রকৃতপক্ষে, বিদ্যমান কোডটিকে পরীক্ষার অধীনে রাখা সহজ নয়, এটি সম্পর্কে একটি বইও রয়েছে: লিগ্যাসি কোডের সাথে কার্যকরভাবে কাজ করা ( মূল পয়েন্টগুলি বা পূর্ববর্তী পিডিএফ দেখুন )।

এখন ইউনিট পরীক্ষা করা বা না লেখা আপনার কল। আপনার কেবল সচেতন হওয়া দরকার যে এটি একটি ক্লান্তিকর কাজ হতে পারে। ইউনিট-টেস্টিং শিখতে বা প্রথমে গ্রহণযোগ্যতা (শেষ থেকে শেষ) পরীক্ষাগুলি লেখার বিষয়ে বিবেচনা করার জন্য আপনি এটিকে মোকাবেলা করতে পারেন এবং যখন আপনি কোডটি পরিবর্তন করবেন বা প্রকল্পে নতুন বৈশিষ্ট্য যুক্ত করবেন তখন ইউনিট পরীক্ষা লিখতে শুরু করুন।


2
"উত্তরাধিকারের কোডের সাথে কার্যকরভাবে কাজ করা" এর জন্য +1। এটি কোডের বিষয়ে যা পরীক্ষাগুলি নেই।
ডেভিড

3

পাইসটনে ইউনিট-টেস্টিংয়ের নাকেরেটস হ'ল উজ্জ্বল সমাধান। এটি ইউনিটটেস্ট ভিত্তিক টেস্টকেস এবং ডকসেট উভয়কেই সমর্থন করে এবং এটি আপনাকে কেবল সাধারণ কনফিগারেশন ফাইল দিয়ে শুরু করে।


আপনার নাস্তিকের লিঙ্কটি অপ্রচলিত। দেখে মনে হচ্ছে নতুন অবস্থানটি হ'ল: nose.readthedocs.org/en/latest
অদ্ভুততা

1
GitHub উপর ডকুমেন্টেশন এবং nosetest ওয়েবসাইট, অনুযায়ী noseএবং nose2িক্ষনাজবক্ষণ মোডে আছেন। এর আরও py.testঅনেক বেশি সমর্থন রয়েছে
বলেই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.