.
QC আপনি & nbsp সত্য রাখা, এবং কম্পিউটার এই বৈশিষ্ট্য আসলে রাখা যে পরীক্ষা এলোমেলোভাবে পরীক্ষা ক্ষেত্রে উৎপন্ন করা যাক আশা লিখুন বৈশিষ্ট্য যা আপনাকে একটি পরীক্ষার টুল; উদাহরণস্বরূপ, যদি আপনি কম্প্রেস লিখিত এবং ফাংশন ডিকম্প্রেস যদি কিছু তথ্য কম্প্রেশন প্রোগ্রাম, পরীক্ষা একটি সুস্পষ্ট সম্পত্তি সংকুচিতকারী এবং একটি স্ট্রিং decompressing মূল স্ট্রিং ফিরে দেয়. এখানে আপনি যে প্রকাশ করতে পারে কিভাবে:
আমদানি unittest
আমদানি QC
বর্গ TestCompression (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; Def test_compress_decompress (স্ব):
& Nbsp; "" ". পরীক্ষা যে সংকুচিতকারী এবং আয় আসল তথ্য decompressing" ""
& Nbsp; তথ্য = qc.str () # একটি অবাধ পংক্তি. মান এলোমেলোভাবে.
& Nbsp; self.assertEqual (তথ্য, ডিকম্প্রেস (কম্প্রেস (তথ্য)), repr (তথ্য))
যে (তাই অনেক boilerplate, আছে, যা কেন) পাইথন এর বিল্ট ইন unittest কাঠামোর সঙ্গে একটি সাধারণ পরীক্ষা. অথবা, আপনি ন্যূনতমরূপে বাগাড়ম্বরপূর্ণ, বেশ সুন্দর নাক মত, একটি ভিন্ন পরীক্ষার কাঠামোর সঙ্গে সঠিক একই জিনিস করতে পারে. @ Qc.property প্রসাধক সজ্জিত ফাংশন বেশ কয়েকবার সঞ্চালিত হয়, এবং প্রতিটি সময় মান () ভিন্ন qc.string মত ফাংশন করে ফিরে আসেন. অন্য কথায়, QuickCheck আছে প্রায় কাছাকাছি প্রতি ইউনিট পরীক্ষা কাঠামোর সঙ্গে সামঞ্জস্যপূর্ণ; এটি বিশেষ করে দাবি করা হচ্ছে.
Qc.str মত কার্যাবলী (), qc.int (), এবং তাই, একটি নির্দিষ্ট ধরনের অবাধ মান উৎপন্ন. উপরোক্ত উদাহরণে, আমরা সম্পত্তি সমস্ত স্ট্রিং জন্য সত্য যে দাবী করছি. আপনি পরীক্ষা চালানো হলে, QuickCheck পরীক্ষার জন্য এলোমেলোভাবে পংক্তি নির্মাণ করা হবে.
আপনি আমি, "এলোমেলোভাবে" "র্যান্ডম" বলেন না বিজ্ঞপ্তি পাবেন. এই ইচ্ছাকৃত হয়. মান বন্টন ইংরেজি টেক্সট ধারণকারী আকর্ষণীয় মান, খালি স্ট্রিং মত, অথবা মাঝখানে NUL অক্ষরের সাথে স্ট্রিং, বা স্ট্রিং অন্তর্ভুক্ত করতে tweaked হয়. সাধারণভাবে, QuickCheck চতুর চতুর মান এবং যদৃচ্ছতা ভাল মিশ্রণ দিতে চেষ্টা করে. এই আপনি এটা করতে হবে না, যে ছাড়া হাত দ্বারা সত্যিই পুঙ্খানুপুঙ্খ পরীক্ষার ক্ষেত্রে লিখতে ছিল, যদি আপনি কি করবেন তা মূলত হয়. বাস্তবে, কম্পিউটার বিবেকী তথ্য গঠন কি সম্পর্কে কম preconceptions আছে, তাই এটা প্রায়ই জন্য পরীক্ষা ক্ষেত্রে লিখতে ঘটেছে আছে না যে বাগ খুঁজে পেতে হবে. এটা অবচেতন বাগ এড়াতে কিভাবে জানি না.
বিল্ট-ইন অবাধ মান ফাংশন সীমাবদ্ধ করছি না. আপনি আপনার নিজের উৎপন্ন ব্লক নির্মাণের হিসাবে তাদের ব্যবহার করতে পারেন. উদাহরণ স্বরূপ:
বর্গ পয়েন্ট (বস্তু):
& Nbsp; Def __init __ (স্ব x, y):
& Nbsp; self.x, self.y = ভাসা (x) ভাসা (Y)
Def বিন্দু ():
& Nbsp; "" "একটি অবাধ পয়েন্ট পান." ""
& Nbsp; এক্স = qc.int (-20, 20)
& Nbsp; Y = qc.int (-34, 50)
& Nbsp; পয়েন্ট ফিরে (x, y)
তারপর আপনি বৈশিষ্ট্য নির্বিচারে বিন্দু মান উৎপন্ন এই ব্যবহার করতে পারেন. এখানে একটি নাক-শৈলী পরীক্ষা:
@ Qc.property
Def test_triangle_inequality ():
& Nbsp; Pt = বিন্দু ()
& Nbsp; ABS (pt.x) + + ABS জাহির (pt.y)> = math.sqrt (pt.x ** 2 + + pt.y ** 2), (pt.x, pt.y)
আপনি এই রান, তখন ঐন্দ্রজালিক কিছু ঘটবে: আপনি (0 0), (1, 1), (ভালো পয়েন্ট দেখতে পাবেন যাতে QuickCheck, একসঙ্গে, পয়েন্ট বর্গ x এবং y উভয় ভেরিয়েবল জন্য চতুর মান উৎপন্ন করার চেষ্টা করা হবে (584 0, 1), (385904, 0), সেইসাথে সম্পূর্ণ র্যান্ডম বেশী, -35809648). অন্য কথায়, শুধু এটা কিছু চতুর মান র্যান্ডম সংখ্যার একটি প্রবাহ থেকে x এবং y মানের অঙ্কন, বরং QuickCheck আসলে x এবং y স্থানাঙ্ক চতুর সমন্বয় উত্পন্ন করতে চেষ্টা করবে.
অবাধ তথ্য পাওয়ার জন্য, কার্যাবলী
- (কম, উচ্চ) int-কম এবং উচ্চ ঐচ্ছিক সীমার মধ্যে, ints দেয়.
- দীর্ঘ (কম, উচ্চ) কম এবং উচ্চ ঐচ্ছিক সীমার মধ্যে, জন্য longs দেয়.
- (কম, উচ্চ) ভাসা কম এবং উচ্চ ঐচ্ছিক সীমার মধ্যে, ফ্লোট দেয়. কোন অসীমতা বা NaN মান.
& Nbsp; Str (দৈর্ঘ্য = কেউ না, maxlen = কেউ না) টাইপ Str এর, স্ট্রিং দেয়. এনকোডিং UTF-8. দৈর্ঘ্য দেওয়া হয়, স্ট্রিং ঠিক যে লম্বা হতে হবে. Maxlen দেওয়া হয়, স্ট্রিং দ্বারা সবচেয়ে maxlen অক্ষর ব্যবহার করা হবে.
- ইউনিকোড (দৈর্ঘ্য = কেউ না, maxlen = কেউ না) টাইপ ইউনিকোড এর, ইউনিকোড স্ট্রিং দেয়. দৈর্ঘ্য দেওয়া হয়, স্ট্রিং ঠিক যে লম্বা হতে হবে. Maxlen দেওয়া হয়, স্ট্রিং দ্বারা সবচেয়ে maxlen অক্ষর ব্যবহার করা হবে.
- নাম () ইউনিকোড নাম দেয়. বেসিক বহুভাষিক প্লেন বাইরে এমন ফাঁকা স্থান, বা ইমেইল ঠিকানা বা ইউনিকোড অক্ষর ধারণকারী নাম সমূহ - বহিরাগত থেকে "জন স্মিথ" মত, বেরসিক থেকে এই পরিসীমা,. নাম কম বিপথগামী কিছু, আপনি ইন্টারনেট তথ্য একটি যথেষ্ট বড় সেট দেখতে হবে যদি এটি হয়.
- NameUtf8 () নাম হিসাবে একই () ('UTF8') সঙ্কেতাক্ষরে লিখা..
- FromList (আইটেম) একটি তালিকা থেকে র্যান্ডম আইটেম ফেরৎ. এটি আপনার নিজস্ব অবাধ তথ্য জেনারেটর ফাংশন তৈরি জন্য বেশিরভাগ দরকারী.
- Randstr (দৈর্ঘ্য = কেউ না, maxlen = sys.maxint) র্যান্ডম বাইট স্ট্রিং দেয়. দৈর্ঘ্য দেওয়া হয়, স্ট্রিং ঠিক যে লম্বা হতে হবে. Maxlen দেওয়া হয়, স্ট্রিং দ্বারা বাইট maxlen সবচেয়ে হতে হবে.
Str এবং ইউনিকোড দ্বারা উত্পাদিত স্ট্রিং এলোমেলো হয়, কিন্তু কিছু প্রচেষ্টা স্ট্রিং প্রসেসিং কোড একটি সম্পূর্ণ অনেক বাগ প্রকাশ করার জন্য তাদের পর্যাপ্ত বিপথগামী তৈরীর মধ্যে রাখা হয়েছে. নামের তালিকা ঢিলেঢালাভাবে এটি বিশ্বের ক্ষিপ্ত হয় যে কখনও আরো স্পষ্ট হয়ে ওঠে হিসাবে, এবং উপর আবার এবং উপর, বাস্তব তথ্য উপর নাম প্রক্রিয়াকরণ কোড ক্র্যাশ এইজন্য ভয়ঙ্কর স্মৃতি উপর ভিত্তি করে, এবং আমরা সত্যিই দণ্ডপ্রাপ্ত হয়. (যদি আপনার যথেষ্ট পরীক্ষা কভারেজ এবং পরিশেষে বিপর্যয় বন্ধ জিনিস পেতে একবার এই অনুভূতি আশা আছে. পাস!)
qc.arbitrary নাম এবং স্ট্রিং উদাহরণ তথ্য আরো deteministic পরীক্ষা ক্ষেত্রে তথ্য একটি উৎস হিসাবে আকর্ষণীয় হতে পারে. কোনো এটা ধার নির্দ্বিধায়. internals জাদু আছে, কিন্তু ঐন্দ্রজালিক অভ্যন্তরীণ অংশ, সবচেয়ে আকর্ষণীয় বেশী qc.arbitrary এবং QC হয়
আবশ্যক :.
- পাইথন
পাওয়া মন্তব্যসমূহ না