| NOSETESTS(1) | nose | NOSETESTS(1) |
نام (NAME)
nosetests - آزمونگیری بهتر برای پایتون
آزمونگیری بهتر برای پایتون (NICER TESTING FOR PYTHON)
خلاصه دستور (SYNOPSIS)
توضیحات (DESCRIPTION)
ابزار nose آزمونها را بهطور خودکار از فایلهای منبع پایتون، پوشهها و بستههای موجود در پوشهٔ کاری خود (که بهطور پیشفرض همان پوشهٔ کاری فعلی است) جمعآوری میکند. هر فایل منبع پایتون، پوشه یا بستهای که با عبارت باقاعدهٔ testMatch (بهطور پیشفرض: (?:^|[b_.-])[Tt]est)) مطابقت داشته باشد، بهعنوان یک آزمون (یا منبعی برای جمعآوری آزمونها) گردآوری خواهد شد. علاوه بر این، تمامی بستههای دیگر موجود در پوشهٔ کاری برای یافتن فایلهای منبع پایتون یا پوشههایی که با testMatch مطابقت دارند بررسی میشوند. فرآیند شناسایی بستهها در سرتاسر درخت سلسلهمراتبی به سمت پایین ادامه مییابد، بنابراین تمام موارد package.tests و package.sub.tests و package.sub.sub2.tests جمعآوری خواهند شد.
درون یک پوشه یا بستهٔ آزمون، هر فایل منبع پایتون که با testMatch مطابقت داشته باشد، برای یافتن موارد آزمون بررسی میشود. درون یک پیمانهٔ آزمون، توابع و کلاسهایی که نامشان با testMatch مطابقت دارد و زیرکلاسهای TestCase با هر نامی، بارگذاری شده و بهعنوان آزمون اجرا خواهند شد. آزمونها میتوانند از کلمهٔ کلیدی assert استفاده کنند یا استثناهای AssertionError ایجاد نمایند تا شکست آزمون مشخص شود. زیرکلاسهای TestCase نیز میتوانند همین کار را انجام دهند یا از متدهای متنوعِ موجود در TestCase استفاده کنند.
توجه به این نکته مهم است که رفتار پیشفرض nose، نادیده گرفتن آزمونهای درون فایلهای قابلاجرا است. برای گنجاندن آزمونها از چنین فایلهایی، بیت قابلاجرای آنها را حذف کنید یا از پرچم --exe استفاده نمایید (بخش 'گزینهها' در ادامه را ببینید).
انتخاب آزمونها (Selecting Tests)
برای تعیین اینکه کدام آزمونها اجرا شوند، نام آزمونها را در خط فرمان وارد کنید:
nosetests only_test_this.py
نامهای آزمون مشخصشده میتوانند نام فایل یا پیمانه باشند و میتوانند بهصورت اختیاری با جدا کردن نام پیمانه یا فایل از نام مورد آزمون با استفاده از دونقطه (:)، مورد آزمونی را که باید اجرا شود مشخص کنند. نام فایلها میتواند نسبی یا مطلق باشد. مثالها:
nosetests test.module nosetests another.test:TestCase.test_method nosetests a.test:TestCase nosetests /path/to/test/file.py:test_function
شما همچنین میتوانید با استفاده از سوییچ -w، پوشهٔ کاری را که nose در آن به دنبال آزمونها میگردد تغییر دهید:
nosetests -w /path/to/tests
با این حال توجه داشته باشید که پشتیبانی از چندین آرگومان -w اکنون منسوخ شده است و در نگارشهای آینده حذف خواهد شد. از نگارش nose 0.10 به بعد، میتوانید همان رفتار را با مشخص کردن پوشههای مقصد بدون سوییچ -w به دست آورید:
nosetests /path/to/tests /another/path/to/tests
سفارشیسازی بیشتر در انتخاب و بارگذاری آزمونها از طریق استفاده از پلاگینها امکانپذیر است.
خروجی نتایج آزمون همسان با خروجی unittest است، به جز قابلیتهای اضافی (کلاسهای خطا، و ویژگیهای ارائهشده توسط پلاگینها مانند دریافت خروجی و دروننگری assert) که در گزینههای زیر شرح داده شدهاند..SS "پیکربندی (Configuration)"
علاوه بر ارسال گزینههای خط فرمان، میتوانید گزینههای پیکربندی را در فایل setup.cfg پروژه خود، یا یک فایل .noserc یا nose.cfg در دایرکتوری خانگی خود قرار دهید. در هر یک از این فایلهای پیکربندی استاندارد به سبک ini، پیکربندی nosetests را در یک بخش [nosetests] قرار میدهید. گزینهها همانند گزینههای خط فرمان هستند، با این تفاوت که پیشوند -- حذف میشود. برای گزینههایی که سوییچهای ساده هستند، باید یک مقدار مشخص کنید:
[nosetests] verbosity=3 with-doctest=1
تمام فایلهای پیکربندی یافتشده بارگذاری شده و گزینههای آنها با یکدیگر ادغام میشوند. میتوانید بارگذاری استاندارد فایلهای پیکربندی را با گزینه -c لغو کرده و تغییر دهید.
استفاده از افزونهها (Using Plugins)
افزونههای متعددی برای nose از طریق easy_install و دیگر منابع در دسترس هستند. برای استفاده از یک افزونه، کافی است آن را نصب کنید. افزونه، گزینههای خط فرمان جدیدی به nosetests اضافه خواهد کرد. برای بررسی نصب بودن افزونه، دستور زیر را اجرا کنید:
nosetests --plugins
میتوانید -v یا -vv را به آن دستور اضافه کنید تا اطلاعات بیشتری درباره هر افزونه نمایش داده شود.
اگر nose.main() یا nose.run() را از داخل یک اسکریپت اجرا میکنید، میتوانید با ارسال فهرستی از افزونهها از طریق آرگومان کلیدواژهای plugins، افزونههای مورد استفاده را مشخص کنید.
افزونههای نسخه 0.9 (0.9 plugins)
نسخه 1.0 ابزار nose میتواند از «برخی» افزونههایی که برای nose 0.9 نوشته شدهاند استفاده کند. مدیر افزونه پیشفرض، یک لایه سازگاری (compatibility wrapper) به دور افزونههای 0.9 اضافه میکند که فراخوانیهای تغییریافته api افزونه را تطبیق میدهد. با این حال، افزونههایی که به ساختارهای داخلی nose دسترسی دارند به احتمال زیاد با خطا مواجه میشوند، بهویژه اگر تلاش کنند به کلاسهای test case یا test suite دسترسی پیدا کنند. برای مثال، افزونههایی که سعی میکنند مشخص کنند آزمون ارسالشده به startTest یک آزمون منفرد است یا یک suite، با شکست مواجه میشوند؛ بخشی به این دلیل که suiteها دیگر به startTest ارسال نمیشوند و بخشی دیگر به این دلیل که به احتمال قوی افزونه در تلاش است بفهمد آیا آزمون نمونهای از کلاسی است که دیگر وجود ندارد یا خیر.
افزونههای نسخههای 0.10 و 0.11 (0.10 and 0.11 plugins)
تمامی افزونههای نوشتهشده برای nose 0.10 و 0.11 باید با nose 1.0 به درستی کار کنند.
گزینهها (Options)
- -V, --version
- چاپ نسخه nose و خروج
- -p, --plugins
- چاپ فهرست افزونههای موجود و خروج. برای مشاهده جزئیات بیشتر، با سطح پرگویی (verbosity) بالاتر ترکیب کنید
- -v=DEFAULT, --verbose=DEFAULT
- ارائه خروجی پرگوتر (اطلاعات بیشتر). [NOSE_VERBOSE]
- --verbosity=VERBOSITY
- تنظیم سطح پرگویی؛ --verbosity=2 معادل -v است
- -q=DEFAULT, --quiet=DEFAULT
- ارائه خروجی کوتاهتر و کمگوتر
- -c=FILES, --config=FILES
- بارگذاری پیکربندی از فایل(های) تنظیمات. میتواند چندین بار مشخص شود؛ در این صورت، تمام فایلهای پیکربندی بارگذاری و ترکیب خواهند شد
- -w=WHERE, --where=WHERE
- جستجوی آزمونها در این دایرکتوری. میتواند چندین بار مشخص شود. نخستین دایرکتوری دادهشده، به عنوان دایرکتوری کاری به جای دایرکتوری کاری فعلی (که پیشفرض است) استفاده خواهد شد. موارد دیگر به فهرست آزمونها برای اجرا اضافه خواهند شد. [NOSE_WHERE]
- --py3where=PY3WHERE
- جستجوی آزمونها در این دایرکتوری تحت Python 3.x. عملکردی مشابه 'where' دارد، اما تنها هنگام اجرا تحت Python 3.x یا بالاتر اعمال میشود. توجه داشته باشید که در صورت وجود تحت 3.x، این گزینه کاملاً جایگزین دایرکتوریهای مشخصشده با 'where' میشود و گزینه 'where' را بیاثر میکند. [NOSE_PY3WHERE]
- -m=REGEX, --match=REGEX, --testmatch=REGEX
- فایلها، دایرکتوریها، نامهای توابع و نامهای کلاسهایی که با این عبارت باقاعده مطابقت دارند به عنوان آزمون شناخته میشوند. پیشفرض: (?:^|[b_./-])[Tt]est [NOSE_TESTMATCH]
- --tests=NAMES
- اجرای این آزمونها (فهرستی که با کاما جدا شده است). این آرگومان عمدتاً در فایلهای پیکربندی مفید است؛ در خط فرمان، کافی است آزمونهای مورد نظر برای اجرا را بدون هیچ سوییچی به عنوان آرگومانهای اضافی ارسال کنید.
- -l=DEFAULT, --debug=DEFAULT
- فعالسازی لاگهای اشکالزدایی برای یک یا چند سامانه. لاگرهای اشکالزدایی موجود: nose، nose.importer، nose.inspector، nose.plugins، nose.result و nose.selector. نامهای چندگانه را با کاما جدا کنید.
- --debug-log=FILE
- ثبت پیامهای اشکالزدایی در این فایل (پیشفرض: sys.stderr)
- --logging-config=FILE, --log-config=FILE
- بارگذاری تنظیمات ثبت گزارش از این فایل -- این کار تمام تنظیمات دیگر مربوط به لاگ را لغو میکند.
- -I=REGEX, --ignore-files=REGEX
- نادیده گرفتن کامل هر فایلی که با این عبارت باقاعده مطابقت دارد. این گزینه بر هر تنظیمات یا افزونه دیگری ارجحیت دارد. مشخص کردن این گزینه، تنظیمات پیشفرض را جایگزین میکند. این گزینه را چندین بار مشخص کنید تا عبارتهای باقاعده بیشتری اضافه شوند [NOSE_IGNORE_FILES]
- -e=REGEX, --exclude=REGEX
- عدم اجرای آزمونهایی که با این عبارت باقاعده مطابقت دارند [NOSE_EXCLUDE]
- -i=REGEX, --include=REGEX
- این عبارت باقاعده بر روی فایلها، دایرکتوریها، نامهای توابع و نامهای کلاسها اعمال میشود تا فرصتی برای افزودن آزمونهای اضافی که با TESTMATCH مطابقت ندارند فراهم شود. این گزینه را چندین بار مشخص کنید تا عبارتهای باقاعده بیشتری اضافه شوند [NOSE_INCLUDE]
- -x, --stop
- توقف اجرای آزمونها پس از اولین خطا یا شکست
- -P, --no-path-adjustment
- عدم اعمال هیچگونه تغییر در sys.path هنگام بارگذاری آزمونها [NOSE_NOPATH]
- --exe
- جستجوی آزمونها در ماژولهای پایتونی که قابل اجرا (executable) هستند. رفتار معمول، مستثنی کردن ماژولهای قابل اجرا است، زیرا ممکن است ایمن برای واردسازی (import-safe) نباشند [NOSE_INCLUDE_EXE]
- --noexe
- جستجو نکردن آزمونها در ماژولهای پایتونی که قابل اجرا هستند. (رفتار پیشفرض در پلتفرم ویندوز جستجو در آنها است.)
- --traverse-namespace
- پیمایش تمام مدخلهای مسیرِ مربوط به یک بسته فضای نام (namespace package)
- --first-package-wins, --first-pkg-wins, --1st-pkg-wins
- واردکننده ابزار nose در حالت عادی چنانچه بستهای با نام مشابه را در مکانی دیگر پیدا کند، بسته قبلی را از sys.modules خارج میکند. این گزینه را برای غیرفعال کردن این رفتار تنظیم کنید.
- --no-byte-compile
- جلوگیری از بایتکامپایل کردن کد منبع به فایلهای .pyc توسط nose در هنگام بررسی و اجرای آزمونها.
- -A=EXPR, --eval-attr=EXPR
- تنها اجرای آزمونهایی که عبارت پایتونی EXPR برای صفتهای آنها برابر با True ارزیابی میشود [NOSE_EVAL_ATTR]
- -s, --nocapture
- عدم ضبط خروجی استاندارد (stdout) (هر خروجی stdout بلافاصله چاپ خواهد شد) [NOSE_NOCAPTURE]
- --nologcapture
- غیرفعالسازی افزونهٔ ضبط گزارشها (logging). پیکربندی گزارشگیری دستنخورده باقی خواهد ماند. [NOSE_NOLOGCAPTURE]
- --logging-format=FORMAT
- مشخصکردن قالب سفارشی برای چاپ پیامها. از همان قالبی که کنترلکنندههای استاندارد logging استفاده میکنند، بهره میبرد. [NOSE_LOGFORMAT]
- --logging-datefmt=FORMAT
- مشخصکردن قالب تاریخ/زمان سفارشی برای چاپ پیامها. از همان قالبی که کنترلکنندههای استاندارد logging استفاده میکنند، بهره میبرد. [NOSE_LOGDATEFMT]
- --logging-filter=FILTER
- مشخصکردن
پیامهایی
که باید
فیلتر (شامل
یا حذف)
شوند.
بهطور
پیشفرض،
همهچیز
ضبط میشود.
اگر خروجی
بیش از حد
پرجزئیات
است، از این
گزینه برای
حذف
خروجیهای
غیرضروری
استفاده
کنید. مثال:
filter=foo تنها
پیامهایی
را ضبط
میکند که
فقط به
foo یا foo.what.ever.sub ارسال شده باشند، اما foobar یا سایر گزارشگیرها را ضبط نمیکند. مشخصکردن چند گزارشگیر با کاما: filter=foo,bar,baz. اگر نام گزارشگیری با علامت تفریق شروع شود، مثلاً filter=-foo، بهجای گنجانده شدن، مستثنی خواهد شد. پیشفرض: مستثنیکردن پیامهای گزارشگیری از خود nose (-nose). [NOSE_LOGFILTER]
- --logging-clear-handlers
- پاککردن تمامی سایر کنترلکنندههای logging
- --logging-level=DEFAULT
- تنظیم سطح گزارش (log level) برای ضبط
- --with-coverage
- فعالسازی
افزونهٔ Coverage:
فعالکردن
گزارش پوشش
آزمون با
استفاده از
ماژول coverage
نوشتهشده
توسط Ned Batchelder.
[NOSE_WITH_COVERAGE]
- --cover-package=PACKAGE
- محدودکردن خروجی پوشش آزمون به بستههای انتخابشده [NOSE_COVER_PACKAGE]
- --cover-erase
- پاککردن آمار پوشش جمعآوریشدهٔ پیشین پیش از اجرا
- --cover-tests
- گنجاندن ماژولهای آزمون در گزارش پوشش [NOSE_COVER_TESTS]
- --cover-min-percentage=DEFAULT
- حداقل درصد پوشش برای قبولی در آزمونها [NOSE_COVER_MIN_PERCENTAGE]
- --cover-inclusive
- گنجاندن تمامی فایلهای پایتون موجود در دایرکتوری کاری در گزارش پوشش. برای کشف خلاءهای پوشش آزمون در صورتی که همهٔ فایلها توسط مجموعه آزمون وارد (import) نشده باشند مفید است. [NOSE_COVER_INCLUSIVE]
- --cover-html
- تولید اطلاعات پوشش آزمون به صورت HTML
- --cover-html-dir=DIR
- تولید اطلاعات پوشش آزمون به صورت HTML در دایرکتوری dir
- --cover-branches
- گنجاندن پوشش انشعاب (branch coverage) در گزارش پوشش [NOSE_COVER_BRANCHES]
- --cover-xml
- تولید اطلاعات پوشش آزمون به صورت XML
- --cover-xml-file=FILE
- تولید اطلاعات پوشش آزمون به صورت XML در فایل FILE
- --pdb
- ورود به اشکالزدا (debugger) در صورت بروز شکست یا خطا
- --pdb-failures
- ورود به اشکالزدا در صورت بروز شکست
- --pdb-errors
- ورود به اشکالزدا در صورت بروز خطا
- --no-deprecated
- غیرفعالسازی مدیریت ویژهٔ استثناهای DeprecatedTest.
- --with-doctest
- فعالسازی
افزونهٔ Doctest:
فعالکردن
افزونهٔ doctest
برای یافتن
و اجرای doctestها
در
ماژولهای
غیرآزمونی.
[NOSE_WITH_DOCTEST]
- --doctest-tests
- همچنین جستجو برای doctestها در ماژولهای آزمون. توجه داشته باشید که کلاسها، متدها و توابع باید یا دارای doctest باشند یا آزمونهای غیر doctest، نه هر دو. [NOSE_DOCTEST_TESTS]
- --doctest-extension=EXT
- همچنین جستجوی doctestها در فایلهای دارای این پسوند [NOSE_DOCTEST_EXTENSION]
- --doctest-result-variable=VAR
- تغییر نام متغیری که نتیجهٔ آخرین دستور مفسر در آن ذخیره میشود از مقدار پیشفرض '_'. میتواند برای جلوگیری از تداخل با تابع _() که برای ترجمهٔ متن استفاده میشود به کار رود. [NOSE_DOCTEST_RESULT_VAR]
- --doctest-fixtures=SUFFIX
- یافتن فیکسچرهای مربوط به یک فایل doctest در ماژولی با نامی که این پسوند به نام پایهٔ فایل doctest افزوده شده است
- --doctest-options=OPTIONS
- مشخصکردن گزینهها برای ارسال به doctest. مانند: '+ELLIPSIS,+NORMALIZE_WHITESPACE'
- --with-isolation
- فعالسازی
افزونهٔ IsolationPlugin:
فعالکردن
افزونهٔ
جداسازی
برای محدود
نگهداشتن
تغییرات
ماژولهای
خارجی به یک
ماژول یا
بستهٔ
آزمون واحد.
افزونهٔ
جداسازی
محتویات sys.modules
را پس از
اجرای هر
ماژول یا
بستهٔ
آزمون، به
وضعیت پیش
از آزمون
بازنشانی
میکند.
لطفاً توجه
داشته
باشید که
این افزونه
نباید
همراه با
افزونهٔ coverage،
یا در هر
شرایط
دیگری که
بارگذاری
مجدد ماژول
ممکن است
عوارض
جانبی
نامطلوبی
ایجاد کند،
استفاده
شود.
[NOSE_WITH_ISOLATION]
- -d, --detailed-errors, --failure-detail
- افزودن جزئیات به خروجی خطا از طریق تلاش برای ارزیابی assertهای شکستخورده [NOSE_DETAILED_ERRORS]
- --with-profile
- فعالسازی
افزونهٔ Profile:
استفاده از
این افزونه
برای اجرای
آزمونها
با
تحلیلگر
عملکرد hotshot.
[NOSE_WITH_PROFILE]
- --profile-stats-file=FILE
- فایل آمار تحلیلگر کارایی؛ پیشفرض در هر بار اجرا یک فایل موقت جدید است.
- --profile-restrict=RESTRICT
- محدود کردن خروجی تحلیلگر کارایی. برای جزئیات به راهنمای pstats.Stats مراجعه کنید.
- --no-skip
- غیرفعالسازی مدیریت ویژهٔ استثناهای SkipTest.
- --with-id
- فعالسازی
افزونهی TestId:
فعال کردن
جهت افزودن
یک شناسه
آزمون
(مانند #1) به
خروجی نام
هر آزمون.
برای اجرای
مجدد تنها
آزمونهای
ناموفق، با
--failed فعال
کنید.
[NOSE_WITH_ID]
- --id-file=FILE
- ذخیره شناسههای آزمون یافتشده در اجراهای آزمون در این فایل. پیشفرض فایل .noseids در دایرکتوری کاری است.
- --failed
- اجرای آزمونهایی که در آخرین اجرای آزمون ناموفق بودهاند.
- --processes=NUM
- توزیع اجرای آزمون بین این تعداد فرایند. برای بهترین نتیجه، عددی برابر با تعداد پردازندهها یا هستههای دستگاه خود تعیین کنید. دادن یک عدد منفی باعث میشود تعداد فرایندها بهطور خودکار روی تعداد هستهها تنظیم شود. وارد کردن 0 به معنای غیرفعال کردن آزمون موازی است. پیشفرض 0 است مگر اینکه NOSE_PROCESSES تنظیم شده باشد. [NOSE_PROCESSES]
- --process-timeout=SECONDS
- تنظیم مهلت زمانی برای بازگشت نتایج از هر فرایند اجراکننده آزمون. پیشفرض 10 است. [NOSE_PROCESS_TIMEOUT]
- --process-restartworker
- در صورت تنظیم، هر فرایند کارگر (worker) پس از اتمام آزمونهایش مجدداً راهاندازی میشود؛ این امر به مهار نشت حافظه و جلوگیری از بین رفتن پایداری سیستم کمک میکند. [NOSE_PROCESS_RESTARTWORKER]
- --with-xunit
- فعالسازی افزونهی Xunit: این افزونه نتایج آزمون را در قالب استاندارد XUnit XML ارائه میدهد. [NOSE_WITH_XUNIT]
- --xunit-file=FILE
- مسیر فایل xml برای ذخیره گزارش xunit. پیشفرض nosetests.xml در دایرکتوری کاری است [NOSE_XUNIT_FILE]
- --xunit-testsuite-name=PACKAGE
- نام testsuite در xml مربوط به xunit، تولید شده توسط افزونه. نام پیشفرض مجموعه آزمون nosetests است.
- --all-modules
- فعالسازی
افزونهی
AllModules:
جمعآوری
آزمونها
از تمامی
ماژولهای
python.
[NOSE_ALL_MODULES]
- --collect-only
- فعالسازی
collect-only: تنها
جمعآوری و
چاپ نام
آزمونها،
بدون اجرای
هیچ آزمونی.
[COLLECT_ONLY] توسعهدهندگان Nose
کپیرایت و تکثیر (COPYRIGHT)
2009, Jason Pellerin
| April 4, 2015 | 1.3 |