পাইস্টেস্ট পরীক্ষা চলাকালীন ইচ্ছায় ipdb.set_trace () কীভাবে কার্যকর করা যায়


99

আমি আমার টেস্ট স্যুট জন্য পাইস্ট ব্যবহার করছি using জটিল আন্ত-উপাদান পরীক্ষায় বাগগুলি ধরার সময়, import ipdb; ipdb.set_trace()আমাকে এটি ডিবাগ করার অনুমতি দেওয়ার জন্য আমি আমার কোডের মাঝখানে রাখতে চাই ।

যাইহোক, পাইস্টেস্ট ফাঁদগুলি sys.stdin / sys.stdout আইপিডিবি ব্যর্থ হয়। পাইস্টের সাথে পরীক্ষার সময় আমি কীভাবে আইপিডিবি ব্যবহার করতে পারি।

আমি ব্যর্থতার পরে পিডিবি বা আইপিডিবিতে ঝাঁপ দেওয়ার বিষয়ে আগ্রহী নই, তবে কোডের যে কোনও জায়গায় বিরতি স্থাপন করতে এবং ব্যর্থতা হওয়ার আগে সেখানে ডিবাগ করতে সক্ষম হবো।

উত্তর:


155

পাইটিস্টেস্ট ক্যাপচার আউটপুট করার কারণে ত্রুটিটি উত্থাপিত হয়েছিল।

আপনার বিকল্পের সাথে পাইস্টেস্ট চালানো উচিত -s(ক্যাপচার আউটপুট বন্ধ করুন)। উদাহরণ স্বরূপ:

py.test -s my_test.py

11
যদি এক জ্যাঙ্গো মধ্যে এই কাজ করতে, যোগ চায় addopts = -sকরার pytest.iniফাইল।
রাহুল গুপ্ত

41

পাইস্ট-আইপিডিবি দুর্ভাগ্যক্রমে আর সমর্থিত নয়।

সমাধান চালানো হয় pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb

সহায়তা আদেশ থেকে:

pytest -h
  --pdb                 start the interactive Python debugger on errors.
  --pdbcls=modulename:classname
                        start a custom interactive Python debugger on errors.
                        For example:
                        --pdbcls=IPython.terminal.debugger:TerminalPdb

পার্থক্যটি কেবলমাত্র টার্মিনালপিডিবি মনে করে এর্রগুলি ফেলেছে, তবে পিডিবি নয় ( আইপিথন ডকস )।


4
TerminalPdbআবার কাজ করছে এবং পছন্দসই সমাধান এটি আপনাকে ট্যাব সমাপ্তি দেবে।
উওয়ে

পিপিডিবি দেখুন, এটি পেয়েছে আইপথন গুণমানের অন্তর্নির্ধারণ
মিশুডার


0

2019-11 হিসাবে এখানে এটি ঠিক করা উচিত:

pip install ipdb gnureadline ptpython

export PYTEST_ADDOPTS='--pdb --pdbcls=IPython.terminal.debugger:Pdb'

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