কীভাবে পায়.স্টেস্ট অভ্যন্তরীণ অবমূল্যায়ন সতর্কতাগুলি দমন করতে হয়


98

পাইস্টের অভ্যন্তরীণ অবমূল্যায়ন সতর্কতাগুলি দমন করার কোনও উপায় আছে কি?

প্রসঙ্গ: আমি পরীক্ষার স্যুট থেকে শুরু noseকরে পোর্টিংয়ের অসুবিধাটি মূল্যায়ন করতে চাই pytest। স্যুটটি মোটামুটি বড় এবং প্রচুর noseস্টাইল yieldভিত্তিক পরীক্ষার জেনারেটর ব্যবহার করে।

আমি প্রথমে নিশ্চিত করতে চাই যে বিদ্যমান পরীক্ষাগুলি পাইস্টেস্টের সাথে পাস করেছে এবং তারপরে সম্ভবত পরীক্ষার জেনারেটরগুলিতে পরিবর্তন করতে হবে parameterized

মাত্র $ pytest path-to-test-folderপাইস্টেস্ট .4.০.৪ নিয়ে চলমান পৃষ্ঠাগুলি এবং পৃষ্ঠাগুলি দ্বারা সম্পূর্ণরূপে প্রাধান্য পেয়েছে

WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0

এই সতর্কতাগুলি বন্ধ করার কোনও উপায় আছে কি?

উত্তর:


93

থেকে pytest --help:

--disable-pytest-warnings
                      disable warnings summary, overrides -r w flag

4
সহায়তার পাঠ্য যেমন বলে, এটি কেবল পাঠ্য সংক্ষিপ্তসার বাদ দেবে। ফলাফলটি এখনও হলুদ হবে এবং দেখানো হবে যে সতর্কতা রয়েছে।
ডেভিড পারসন

নীচে দেখানো হিসাবে পাইস্টেস্ট.ইএনআই ফাইলে রাখা ভাল।
vy32

96

pytest -p no:warnings, বা আপনার পাইস্টেটি.এনআই বা টক্স.আইএনআইতে নিম্নলিখিতগুলি যুক্ত করুন:

[pytest]
addopts = -p no:warnings

সতর্কতার কোনও ইঙ্গিত ছাড়াই ফলাফল সবুজ হবে। Https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary এ ডকুমেন্টেশন দেখুন ।

আপনি যেখানে পরিষ্কার আউটপুট চান তা কোনও টেস্ট স্যুইটের জন্য এটি একটি বৈধ ব্যবহারের ক্ষেত্রে হতে পারে।

সর্বদা সচেতন হন যে সমস্ত সতর্কতাগুলি সর্বদা লুকিয়ে রাখার কারণে আপনি গুরুত্বপূর্ণ সতর্কতা মিস করতে পারেন। আপনি যদি কেবলমাত্র নির্দিষ্ট সতর্কতাগুলি গোপন করতে চান তবে ক্লকের উত্তরটি দেখুন


4
addopts = -p no:warningsসত্যিই খারাপ ধারণা, এবং ক্লক সমাধানটি অনেক স্যানার, তবে যখন ignore::InsecureRequestWarningআপনাকে স্বীকৃতি দেওয়া হয়নি তখন আমাকে তোমার ব্যবহার করতে হয়েছিল, তাই আপনিও +1 পান
পিটার এম - 21:

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

74

আমি মনে করি আপনি সমস্ত সতর্কতাগুলি গোপন করতে চান না, তবে কেবল প্রাসঙ্গিক নয়। এবং এই ক্ষেত্রে, আমদানিকৃত পাইথন মডিউলগুলি থেকে বিচ্যুতি সতর্কতা।

সতর্কতা ক্যাপচার সম্পর্কে পাইস্টেস্ট ডকুমেন্টেশন পড়ার :

উভয় -w কম্যান্ড-লাইন বিকল্প এবং filterwarnings স্টার বিকল্প পাইথন নিজস্ব এর উপর ভিত্তি করে -w বিকল্প এবং warnings.simplefilter , তাই অন্যান্য উদাহরণ এবং উন্নত ব্যবহারের জন্য পাইথন ডকুমেন্টেশন ঐ বিভাগে পড়ুন দয়া করে।

সুতরাং আপনি অজগরটির -Wবিকল্প দিয়ে সতর্কতাগুলি ফিল্টার করতে পারেন !

দেখে মনে হচ্ছে এটি pytestসম্পূর্ণরূপে ফিল্টারগুলি সরিয়ে দেয়, কারণ এটি DeprecationWarningচলার সময় সমস্তগুলিই দেখায় এবং ডিফল্ট সতর্কতা ফিল্টারগুলি সম্পর্কে পাইথনের ডকুমেন্টেশন পরিষ্কারভাবে বলে:

নিয়মিত রিলিজ বিল্ডগুলিতে, ডিফল্ট সতর্কতা ফিল্টারটিতে নিম্নলিখিত প্রবেশগুলি থাকে (অগ্রাধিকারের ক্রমে):

default::DeprecationWarning:__main__
ignore::DeprecationWarning
ignore::PendingDeprecationWarning
ignore::ImportWarning
ignore::ResourceWarning

সুতরাং আপনার ক্ষেত্রে, যদি আপনি বলতে চান যে যে ধরণের সতর্কতা আপনি উপেক্ষা করতে চান তার মতো ফিল্টার করুন, যেমন DeprecationWarning, কেবল পাইস্ট কমান্ডটি -Wবিকল্পটি দিয়ে চালান :

$ pytest path-to-test-folder -W ignore::DeprecationWarning

সম্পাদনা : কলিনীর মন্তব্য থেকে, মডিউল দ্বারা ফিল্টার করা সম্ভব। সমস্ত স্কেলচেমি থেকে অবহেলা সতর্কতা উপেক্ষা করার উদাহরণ:

ignore::DeprecationWarning:sqlalchemy.*:

এরপরে আপনি আপনার ইনস্টল হওয়া মডিউলগুলি তালিকাভুক্ত করতে পারেন যাগুলির আউটপুটে খুব বেশি শব্দ তৈরি করে pytest

কমান্ড লাইনের চেয়ে ফাইলের সাথে ব্যবহার করুন:

আপনি সেই ফিল্টারগুলি পাইস্টেস্ট.ইএনআই ফাইলগুলিতে তালিকাভুক্ত করতে পছন্দ করতে পারেন:

[pytest]
filterwarnings =
    ignore::DeprecationWarning

11
মডিউলটিতে ফিল্টার করার জন্য আপনি একটি রেজেেক্স ব্যবহার করেন। সমস্ত স্ক্ল্যাচেমি মডিউলগুলি থেকে অবজ্ঞার সতর্কতাগুলি উপেক্ষা করার উদাহরণ:ignore::DeprecationWarning:sqlalchemy.*:
কলিণী

@ কলিনি যে -ডাব্লু পতাকাটির পক্ষে আমার পক্ষে যুক্তি হিসাবে ব্যর্থ হয়েছিল, তবে এটি আমার পাইস্টেস্ট.আইএনআই ফাইলটিতে কাজ করেছিল।
হোয়াইট হটলভটাইগার

10

Pytest.ini ফাইলটিতে আপনি যুক্ত করতে পারেন:

[pytest]
addopts = -p no:warnings

অথবা কমান্ড-লাইনে লাইনের নীচে দিয়ে যাচ্ছেন । আপনার পরীক্ষার স্যুটগুলি যদি বাহ্যিক সিস্টেম ব্যবহার করে সতর্কতাগুলি পরিচালনা করে তবে এটি কার্যকর হতে পারে।

-পি নোট: সতর্কতা

বা আপনি যদি কেবলমাত্র কিছু নির্দিষ্ট অবজ্ঞাত সতর্কতা গোপন করতে চান তবে নীচে আপনার বিবরণ যুক্ত করুন pytest.ini ফাইল

[pytest]
filterwarnings =
    ignore:.*U.*mode is deprecated:DeprecationWarning

এটি হ্রাসের প্রকারের সমস্ত সতর্কতাগুলিকে উপেক্ষা করবে যেখানে বার্তাটির শুরুটি নিয়মিত অভিব্যক্তির সাথে মেলে ""। * মার্কিন যুক্তরাষ্ট্র * মোড অবচিত করা হয়েছে "।

বা যদিও প্রস্তাবিত নয়, আপনি এটি ব্যবহার করতে পারেন

- অক্ষম-সতর্কতা

সতর্কতা সংক্ষিপ্তসার পুরোপুরি টেস্ট রান আউটপুট থেকে দমন করতে কমান্ড-লাইন বিকল্প।


5

আমি সমস্ত সতর্কতা গোপন করতে চাই না, তাই আমি এটি ভিতরে রেখেছি pytest.ini

[pytest]
filterwarnings =
    ignore::DeprecationWarning
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.