আমি পাইথনস মক.প্যাচ ব্যবহার করছি এবং প্রতিটি কলের ফিরতি মান পরিবর্তন করতে চাই। এখানে সতর্কতা: প্যাচ করা হচ্ছে ফাংশনটির কোনও ইনপুট নেই, তাই ইনপুটটির ভিত্তিতে আমি ফেরতের মানটি পরিবর্তন করতে পারি না।
রেফারেন্সের জন্য আমার কোড এখানে।
def get_boolean_response():
response = io.prompt('y/n').lower()
while response not in ('y', 'n', 'yes', 'no'):
io.echo('Not a valid input. Try again'])
response = io.prompt('y/n').lower()
return response in ('y', 'yes')
আমার পরীক্ষার কোড:
@mock.patch('io')
def test_get_boolean_response(self, mock_io):
#setup
mock_io.prompt.return_value = ['x','y']
result = operations.get_boolean_response()
#test
self.assertTrue(result)
self.assertEqual(mock_io.prompt.call_count, 2)
io.prompt
"ইনপুট" এর কেবলমাত্র একটি প্ল্যাটফর্ম স্বাধীন (অজগর 2 এবং 3) সংস্করণ। সুতরাং শেষ পর্যন্ত আমি ব্যবহারকারীদের ইনপুট উপহাস করার চেষ্টা করছি। আমি রিটার্ন মানটির জন্য একটি তালিকা ব্যবহার করার চেষ্টা করেছি, তবে এটি কাজ করে না।
আপনি দেখতে পাচ্ছেন যে যদি ফেরতের মানটি কিছু অবৈধ হয় তবে আমি এখানে একটি অসীম লুপ পাব। সুতরাং আমার শেষ পর্যন্ত রিটার্ন মান পরিবর্তন করার একটি উপায় প্রয়োজন, যাতে আমার পরীক্ষাটি শেষ হয়।
(এই প্রশ্নের উত্তর দেওয়ার আরেকটি সম্ভাব্য উপায় হ'ল আমি ব্যাখ্যা করতে পারি যে কীভাবে আমি ইউনিট-পরীক্ষায় ব্যবহারকারীদের ইনপুটটি নকল করতে পারি)
এর কোনও DUP এই প্রশ্নের প্রধানত কারণ আমি ইনপুট তারতম্য ক্ষমতা হবে না।
উপর উত্তর মন্তব্য এক এই প্রশ্নের একই লাইন বরাবর, কিন্তু কোন উত্তর / মন্তব্য প্রদান করা হয়েছে।
is
স্ট্রিং আক্ষরিক তুলনা করতে ব্যবহার করার চেষ্টা করছেন । এটা করবেন না। এটি (কখনও কখনও) কাজ করে এমন ঘটনাটি সিপিথনে কেবল একটি বাস্তবায়ন বিশদ। এছাড়াও, response is not 'y' or 'n' or 'yes' or 'no'
সম্ভবত আপনি যা ভাবেন তা করছেন না ...
response is not 'y' or 'n' or 'yes' or 'no'
মধ্যে না করছেন আপনি কি মনে করেন এটা আছে। দেখুন আমি একাধিক মানের বিপরীতে একটি পরিবর্তনশীল কীভাবে পরীক্ষা করব? এবং আপনি উচিত না ব্যবহারis
স্ট্রিং মান, ব্যবহার তুলনা==
তুলনা মান বস্তু নয় পরিচয়।