در Newman میتوانید برای اجرای Collectionها گزارشهای اختصاصی بسازید. اگر reporterهای داخلی نیاز شما را پوشش نمیدهند، میتوانید از reporterهای خارجی آماده استفاده کنید یا reporter سفارشی خودتان را بنویسید؛ مثلا برای ثبت response body وقتی یک request یا test شکست میخورد.
ساخت reporter سفارشی #
Reporter سفارشی یک ماژول Node.js است که نام package آن باید با الگوی newman-reporter-<name> ساخته شود.
- در مسیر دلخواه یک npm package خالی بسازید:
npm init
- یک فایل
index.jsاضافه کنید و تابعی با این شکل export کنید:
function CustomNewmanReporter (emitter, reporterOptions, collectionRunOptions) {
// emitter یک event emitter است و رویدادهای اجرای Newman را ارسال میکند.
// reporterOptions گزینههای مخصوص همین reporter را نگه میدارد.
// collectionRunOptions گزینههای کلی اجرای Collection را نگه میدارد.
}
module.exports = CustomNewmanReporter
- برای استفاده محلی، با
npm packیک فایل TGZ بسازید و آن را نصب کنید:
npm i -g newman-reporter-<name>.<version>.tgz
نامهای scoped مثل @myorg/newman-reporter-<name> هم پشتیبانی میشوند.
- در صورت نیاز میتوانید reporter را با
npm publishدر npm منتشر کنید.
استفاده از reporter خارجی یا سفارشی #
برای استفاده از یک reporter خارجی یا سفارشی، ابتدا باید package آن را نصب کنید. مثلا برای reporter HTML:
npm install newman-reporter-html
Reporter خارجی زمانی قابل استفاده است که با event sequenceهای Newman سازگار باشد. نام package معمولا با الگوی newman-reporter-<name> است. اگر Newman را global نصب کردهاید، reporter را هم global نصب کنید؛ در غیر این صورت نصب local کافی است.
برای نصب reporter محلی که منتشر نشده است:
npm install <path/to/local-reporter-directory>
هنگام معرفی reporter به Newman لازم نیست پیشوند newman-reporter را بنویسید. مثلا اگر package شما newman-reporter-myreporter است، در گزینهها فقط myreporter را استفاده کنید.
استفاده از reporter در خط فرمان #
newman run /path/to/collection.json -r myreporter --reporter-myreporter-<option-name> <option-value>
گزینه reporter اختیاری است و فقط وقتی لازم میشود که reporter شما تنظیمات خاصی دریافت میکند.
استفاده برنامهنویسیشده #
var newman = require('newman');
newman.run({
collection: '/path/to/collection.json',
reporters: 'myreporter',
reporter: {
myreporter: {
'option-name': 'option-value'
}
}
}, function (err, summary) {
if (err) { throw err; }
console.info('collection run complete!');
});
اگر package شما scoped باشد، باید scope را هم در نام reporter بیاورید. مثلا برای package با نام @myorg/newman-reporter-name، reporter را با @myorg/name مشخص کنید.
منبع آموزشی: Postman Docs، بازنویسی و سادهسازیشده برای کاربران فارسیزبان.

