رفتن به محتوای اصلی
فهرست مستندات
داده‌مجموعه‌ها

استفاده از datasetها در Postman

به‌روزرسانی ۳ دقیقه مطالعه Postman

فهرست مطالب
  1. استفاده از dataset در collection run
  2. استفاده از dataset در mock server
  3. استفاده از dataset در scriptها

بعد از ساخت dataset، می‌توانید از آن در collection runها، local mock serverها و scriptهای Postman استفاده کنید. Dataset کمک می‌کند داده تست را یک‌بار نگه دارید و در چند workflow با داده ثابت، قابل query و قابل فیلتر کار کنید.

Dataset می‌تواند از فایل local، فایل cloud یا منبع زنده مثل دیتابیس تغذیه شود. Viewها هم داده را برای سناریوهای خاص فیلتر یا تبدیل می‌کنند.

استفاده از dataset در collection run

در collection run، هر ردیفی که view انتخاب‌شده برمی‌گرداند به یک iteration تبدیل می‌شود. فیلدهای dataset به صورت متغیر در run در دسترس هستند و می‌توانید از syntax مثل {{variableName}} در requestها استفاده کنید.

فرض کنید یک dataset با data source محلی CSV دارید:

userId,email,name
1,user1@example.com,User One
2,user2@example.com,User Two
3,user3@example.com,User Three
4,user4@example.com,User Four

در request می‌توانید از فیلدها به صورت variable استفاده کنید:

GET /user?userId={{userId}}&email={{email}}&name={{name}}

در pre-request یا post-response script هم مقدار iteration فعلی از طریق pm.iterationData در دسترس است:

console.log(pm.iterationData.get("email"));

اگر در script به داده بیشتری از dataset نیاز دارید، می‌توانید از pm.datasets استفاده کنید:

const ds = pm.datasets("users-dataset-id");

const result = await ds.executeQuery(
  "SELECT * FROM users WHERE email = ?",
  [pm.iterationData.get("email")]
);

const allRows = [];

for await (const row of result.rows) {
  allRows.push(row);
}

console.log(JSON.stringify(allRows));

برای اجرای collection با dataset:

  1. از Items وارد Collections شوید و collection را انتخاب کنید.
  2. در requestها از variableهایی با نام فیلدهای dataset استفاده کنید.
  3. روی Run کلیک کنید.
  4. Run manually را انتخاب کنید.
  5. در بخش Dataset، dataset و view موردنظر را انتخاب کنید.
  6. در صورت نیاز، از تب Data پیش‌نمایش داده را ببینید.
  7. Start run را بزنید.

در زمان اجرا، Postman مقدارهای هر ردیف view را به variableها اختصاص می‌دهد. اگر از pm.datasets استفاده می‌کنید، نتیجه query به صورت async iterable برمی‌گردد؛ بنابراین برای خواندن ردیف‌ها از for await...of استفاده کنید.

استفاده از dataset در mock server

در local mock server می‌توانید از pm.datasets برای ساخت پاسخ‌های پویا استفاده کنید. به جای پاسخ static، mock server می‌تواند داده را query کند و بر اساس request پاسخ مناسب برگرداند.

نمونه داده CSV:

userId,email,name
1,user1@example.com,User One
2,user2@example.com,User Two
3,user3@example.com,User Three
4,user4@example.com,User Four

نمونه پیاده‌سازی local mock server:

const http = require("http");
const url = require("url");
const PORT = process.env.PORT || 4500;

const server = http.createServer(async (req, res) => {
  const { method } = req;
  const { pathname, query } = url.parse(req.url, true);

  // @endpoint GET /user
  if (method === "GET" && pathname === "/user") {
    const ds = pm.datasets("users-dataset-id");

    const result = await ds.executeQuery(
      "SELECT userId, email, name FROM users WHERE userId = ?",
      [query.userId]
    );

    const allRows = [];

    for await (const row of result.rows) {
      allRows.push(row);
    }

    if (allRows.length === 0) {
      res.writeHead(404, { "Content-Type": "application/json" });
      return res.end(JSON.stringify({ error: "User not found" }));
    }

    res.writeHead(200, { "Content-Type": "application/json" });
    return res.end(JSON.stringify(allRows[0]));
  }

  res.writeHead(404, { "Content-Type": "application/json" });
  res.end(JSON.stringify({ error: "Endpoint not defined" }));
});

server.listen(PORT, () => {
  console.log(`Mock server running on port ${PORT}`);
});

برای تست، یک request مثل زیر بفرستید:

http://localhost:4500/user?userId=2

Mock server هنگام دریافت request، dataset را query می‌کند و ردیف مطابق را به عنوان response برمی‌گرداند. برای queryهای قابل استفاده مجدد، می‌توانید به جای query مستقیم از executeView() استفاده کنید.

استفاده از dataset در scriptها

در pre-request و post-response scriptها می‌توانید پاسخ API را با داده قابل query در dataset مقایسه کنید. این روش برای اعتبارسنجی response با داده مورد انتظار کاربرد دارد.

نمونه request:

GET /user?userId=2

نمونه post-response script:

const ds = pm.datasets("users-dataset-id");
const responseJson = pm.response.json();

const result = await ds.executeQuery(
  "SELECT userId, email, name FROM users WHERE userId = ?",
  [responseJson.userId]
);

const allRows = [];

for await (const row of result.rows) {
  allRows.push(row);
}

pm.test("Response matches dataset", function () {
  pm.expect(allRows.length).to.eql(1);
  pm.expect(responseJson.email).to.eql(allRows[0].email);
  pm.expect(responseJson.name).to.eql(allRows[0].name);
});

وقتی request اجرا می‌شود، script داده matching را از dataset می‌خواند و response را با آن مقایسه می‌کند. خروجی query هم مثل نمونه‌های قبل async iterable است.

منبع آموزشی: Postman Docs، بازنویسی و ساده‌سازی‌شده برای کاربران فارسی‌زبان.

ایستگاه بعدی شما

TestRail را همین حالا در محیط دمو ببینید.

محیط تست آماده

دسترسی به دمو TestRail

قبل از ورود، مشخصات زیر را در صفحه ورود محیط دمو وارد کنید.

آدرس دمو

https://demo.testrail.ir

ایمیل ورود

demo@testrail.ir

رمز عبور

demo_user