অজগর মধ্যে assertEquals বনাম assertEqual


183

তার মাঝে একটি পার্থক্য আছে কি assertEqualsএবং assertEqualপাইথন মধ্যে unittest.TestCase?

এবং যদি না হয় তবে দুটি ফাংশন কেন? শুধু সুবিধার জন্য?

উত্তর:


208

ভাল প্রশ্ন!

আসলে, পাইথন 2.6 এ উভয় assertEqualএবং assertEqualsসুবিধার alias লেখা হয় failUnlessEqual। উত্স তাদের এইভাবে ঘোষণা করে:

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual

ইন পাইথন 3 , আপনার বিন্দু, failUnlessEqualস্পষ্টভাবে অসমর্থিত হয়েছে। assertEqualsএই মন্তব্য বহন করে :-)

দৃser়তা পদ্ধতিতে প্রতিশব্দ

# বহুবচনগুলি অননুমোদিত। ব্যবহারকে নিরুৎসাহিত করার জন্য তাদের সেভাবে রাখুন।

# আরও যোগ করবেন না। অপসারণ না.

# এগুলিতে অবমূল্যায়ন চক্রের মধ্য দিয়ে যাওয়া অনেক লোককে বিরক্ত করবে।

সুতরাং, আপশটটি মনে হচ্ছে যে আপনি পাইথন ২.x এর জন্য যা পছন্দ করেন তা ব্যবহার করুন তবে assertEqualপাইথন ৩ এর দিকে ঝোঁক ।


34
আসলে বহুবচন সম্পর্কে মন্তব্য অস্পষ্ট। এটি বলেছে "বহুবচন" অননুমোদিত। আপনার চূড়ান্ত বাক্যটি বোঝায় যে আপনি বোঝাতে চাইছেন এমন পদ্ধতির নামগুলি যেমন 'গুলি' দিয়ে শেষ হয়, যেমন assertEquals। তবু ব্যাকরণগতভাবে, সমান একটি ক্রিয়াপদের একক (তৃতীয় ব্যক্তি) রূপ, বহুবচন নয়। আমি মনে করি মন্তব্য-লেখকের অর্থ কী আপনি সঠিকভাবে বুঝতে পেরেছিলেন তবে 'বহুবচন' শব্দটি ভুল হয়েছে is
LarsH

45

একটি 3.3 আপডেট: 26.3.7.1.1 থেকে অবহেলিত উপকরণ :

Reasonsতিহাসিক কারণে, কিছু টেস্টকেস পদ্ধতিতে এক বা একাধিক উপকরণ ছিল যা এখন হ্রাস করা হয়েছে। নিম্নলিখিত টেবিলটি তাদের হ্রাসপ্রাপ্ত উপাধিকার পাশাপাশি সঠিক নাম তালিকাভুক্ত করে:

Method Name   | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual  | assertEquals
...


5

আমি মনে করি এটি সামগ্রিক কোড প্রবাহকে শব্দার্থতভাবে প্রবাহিত করার জন্য "বনাম" "করণের একমাত্র স্পষ্ট উপায়" এর মধ্যে উত্তেজনা ছিল। ব্যক্তিগতভাবে আমি দেখতে পেয়েছি আমি পড়তে পছন্দ করি

failIf(some_condition)

উপর

assertFalse(some_condition)

তবে পছন্দ হয়েছে

assertEqual(a, b)

অন্য দুটির উপরে ( assertEquals(a, b)ব্যাকরণের আমার বোধকে বিরক্ত করে)।

"এটি করার একমাত্র সুস্পষ্ট উপায়" অগ্রাধিকার গ্রহণ করেছে taken


3

আমি http://docs.python.org/library/unittest.html- এ assertEquals এর কোনও উল্লেখ পাই না । তবে, আমি যখন টেস্টকেস আমদানি করি এবং তারপরে একটি "সহায়তা (টেস্টকেস)" করি, এটি তালিকাভুক্ত। আমি মনে করি এটি সুবিধার জন্য প্রতিশব্দ মাত্র।


10
হ্যাঁ, তবে এটি "এটি করার একমাত্র স্পষ্ট উপায়" মন্ত্রকে খারাপভাবে ভেঙে ফেলেছে :-(।
অ্যালেক্স মার্টেলি

4
@ অ্যালেক্স - আপনি আমার পক্ষে কোনও যুক্তি পাবেন না।
ফ্রেড লারসন

0

আমি জানি এটি নির্দিষ্ট প্রশ্নের উত্তর দেয় না, তবে আপনি অনুসন্ধানের সময় যদি এখানে এসে থাকেন:

using deprecated method assertEquals()

আপনার কেবল কলকে .SsertEqual () এ পরিবর্তন করতে হবে ('s' কে সমানস্থানে সরান)


-1

এটি প্রায় একইরকম বাদে যে assertEquals পুনরায় সংকলন করা হয়। এটি এখানে হিসাবে assertEqual ব্যবহার করার পরামর্শ দেওয়া হয়:

# Synonyms for assertion methods
# The plurals are undocumented.  Keep them that way to discourage use.
# Do not add more.  Do not remove.
# Going through a deprecation cycle on these would annoy many people.


      assertEquals = assertEqual

অনলাইন উত্স: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py


1
প্রযুক্তিগতভাবে আপনি ঠিক বলেছেন, তবে একটির নামটি হ্রাস পেয়েছে এবং অন্যটির নাম নেই। আপনি যে লিঙ্কটি সংযুক্ত করেছেন তার অর্থ হ'ল নামগুলি অবহেলিত নামগুলি পুনরায় লেখার জন্য।
মারিয়াস গেডমিনাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.