Apidog Docs
🇻🇳 Tiếng Việt
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇻🇳 Tiếng Việt
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇻🇳 Tiếng Việt
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
HomeLearning Center
Support CenterAPI ReferencesDownloadChangelog
HomeLearning Center
Support CenterAPI ReferencesDownloadChangelog
  1. Kiểm thử tự động
  • Back to home
  • Trung tâm hỗ trợ
  • Trung tâm Hỗ trợ Apidog
  • Nhập/Xuất
    • Làm thế nào để nhập dữ liệu API vào Apidog?
    • Làm thế nào để import cURL trong Apidog?
    • Làm thế nào để di chuyển môi trường Postman sang Apidog?
    • Cách tự động nhóm các endpoint khi nhập Swagger/OpenAPI?
  • Gửi yêu cầu
    • Apidog có hỗ trợ Socket.IO không?
    • Vì sao dấu "+" trong giá trị tham số được giải mã thành khoảng trắng?
    • Cách gửi yêu cầu trong Apidog?
    • Cách gửi yêu cầu GraphQL trong Apidog?
    • Cách gửi yêu cầu gRPC trong Apidog?
    • Làm thế nào để gửi một yêu cầu SOAP/WebService trong Apidog?
    • Cách gửi yêu cầu WebSocket trong Apidog?
    • Apidog có hỗ trợ script trước yêu cầu/script kiểm thử và khẳng định trong API WebSocket không?
    • Cách gửi yêu cầu SSE trong Apidog?
    • Làm thế nào để thêm header mặc định ở cấp thư mục?
    • Apidog có hỗ trợ script trước yêu cầu/script kiểm thử và khẳng định trong API gRPC không?
    • Lỗi ELANREFUSED.DNS Resolver
    • Tại sao tôi gặp lỗi "socket hang up" khi gửi yêu cầu?
    • Sửa lỗi yêu cầu
      • Khắc phục lỗi read ECONNRESET
      • Khắc phục lỗi ECONNREFUSED
      • Khắc phục lỗi ETIMEDOUT
      • Khắc phục lỗi ENOTFOUND: Couldn't resolve host
      • Khắc phục lỗi ENOTFOUND: getaddrinfo ENOTFOUND www
      • Khắc phục lỗi connect EHOSTUNREACH
  • Thiết kế API
    • Làm thế nào để sử dụng biến trong đường dẫn?
    • Tôi có thể sử dụng một response component làm phản hồi mặc định không?
    • Làm thế nào để kiểm tra ai đã sửa đổi một endpoint?
    • Làm thế nào để tôi xóa hàng loạt các thư mục endpoint trong Apidog?
    • Làm thế nào để tôi thêm/xóa hàng loạt tiền tố vào đường dẫn của endpoint?
    • Cách di chuyển cấp của một thuộc tính trong Schema Editor?
    • Nếu một thuộc tính chuỗi có nhiều giá trị liệt kê và được sử dụng ở nhiều vị trí khác nhau, làm thế nào để enum này có thể được tham chiếu nhất quán trong toàn bộ tài liệu?
    • Làm thế nào để lấy ID thư mục tài nguyên Apidog?
    • Làm thế nào để lấy ID thư mục tài nguyên của Apidog?
    • Làm thế nào để sử dụng biến trong đường dẫn URL?
    • Tôi nên làm gì nếu một endpoint, tài liệu hoặc kịch bản kiểm thử bị xóa nhầm?
    • Apidog có hỗ trợ mã yêu cầu cho endpoint tùy chỉnh không?
    • Làm thế nào để tự động nhóm các endpoint khi nhập Swagger/OpenAPI vào Apidog?
    • Làm thế nào để tạo dữ liệu mảng không trùng lặp trong phản hồi mock?
    • Vì sao không hỗ trợ nhập "#" trong path?
  • Gỡ lỗi API
    • Apidog tích hợp với các hệ thống quản lý khóa của bên thứ ba như thế nào?
    • Tại sao cùng một yêu cầu hoạt động chính xác trong các công cụ khác (chẳng hạn như Postman) nhưng lại không hoạt động trong Apidog?
    • Làm thế nào để lấy giá trị biến từ cơ sở dữ liệu trong Apidog?
    • Làm thế nào để di chuyển môi trường từ các công cụ khác sang Apidog?
    • Làm thế nào để khẳng định bằng script trong Apidog?
    • JSONPath chỉ có thể trích xuất mảng. Làm thế nào để trích xuất một phần tử đơn lẻ từ bên trong mảng trong Apidog?
    • Cách cấu hình thao tác cơ sở dữ liệu trong Apidog khi các môi trường khác nhau có thông tin xác thực tài khoản cơ sở dữ liệu khác nhau?
    • Làm thế nào để lấy URL cơ sở của dịch vụ trong script tùy chỉnh?
    • Tại sao Apidog báo lỗi vượt quá độ dài chuỗi Node.js tối đa khi phản hồi API quá lớn?
    • Giới hạn kích thước khi in ra console là bao nhiêu? Tại sao tôi gặp lỗi khi in các tệp lớn?
    • Cách khắc phục lỗi kết nối cơ sở dữ liệu DB2 trên Windows?
    • Tại sao tôi gặp lỗi NJS-045 khi kết nối với cơ sở dữ liệu Oracle trong Apidog?
    • Cách tạo giá trị động trong script tùy chỉnh của Apidog?
    • Tại sao yêu cầu từ client đến cùng một endpoint thành công, nhưng khi debug trên phía web lại xảy ra lỗi: "Unable to request address"?
    • Tại sao Apidog báo lỗi khi phản hồi quá lớn?
    • Làm thế nào để sử dụng endpoint ghi của Apidog?
    • Khi định nghĩa phản hồi của endpoint, endpoint có được phép không có nội dung phản hồi không?
    • Làm thế nào để lấy service baseURL trong custom script?
    • Làm thế nào để xem gói tin gốc trong Apidog?
    • Tại sao tôi thấy lỗi "Invalid URI xxx" khi thực hiện yêu cầu?
    • Làm thế nào để tạo một yêu cầu bất đồng bộ trong script Apidog?
    • Tại sao tôi thấy thông báo "Couldn't resolve host" khi gửi yêu cầu?
    • Giới hạn kích thước in của console là gì? Tại sao tôi gặp lỗi khi in một tệp lớn?
    • Làm thế nào để tải tệp lên trong một yêu cầu endpoint?
    • Cần làm gì nếu Apidog bị treo hoặc dữ liệu phản hồi không hiển thị?
    • URI chuyển hướng chính thức được Apidog sử dụng cho OAuth2.0
  • Dữ liệu API mock
    • Làm thế nào để mock API tự động?
    • Mocking của Apidog có thể làm gì?
    • Làm thế nào để mock dữ liệu API cố định trong Apidog?
    • Cách mock dữ liệu có điều kiện trong Apidog?
    • Cách bật cloud mock trong Apidog?
    • Làm thế nào để bật mock tự lưu trữ trong Apidog?
    • Apidog có hỗ trợ mock API WebSocket không?
    • Vì sao trình duyệt không trả về nội dung khi yêu cầu mock endpoint?
  • Kiểm thử tự động
    • Vì sao các kịch bản kiểm thử chạy bình thường trên client cục bộ của tôi, nhưng lại xảy ra lỗi khi chạy trong Apidog CLI hoặc runner?
    • Cách tạo một kịch bản kiểm thử trong Apidog?
    • Làm thế nào để truyền dữ liệu giữa các bước kiểm thử?
    • Tại sao tôi không thể tham chiếu thành công dữ liệu bước trước?
    • Cách sử dụng vòng lặp foreach trong Apidog?
    • Sự khác biệt giữa đồng bộ dữ liệu từ endpoint/trường hợp endpoint là gì?
    • Cách sử dụng dữ liệu kiểm thử trong Apidog?
    • Cách truy xuất dữ liệu kiểm thử trong script trong Apidog?
    • Cách chạy hàng loạt các kịch bản kiểm thử trong Apidog?
    • Cách lên lịch tác vụ kiểm thử trong Apidog?
    • Cách chạy kiểm thử hiệu năng trong Apidog?
    • Làm thế nào để tôi xem các yêu cầu và phản hồi thực tế trong các kiểm thử hiệu năng?
    • Làm thế nào để xuất báo cáo kiểm thử hiệu năng trong Apidog?
    • Cách sử dụng kết quả truy vấn cơ sở dữ liệu làm tham số để lặp các yêu cầu API?
    • Capture and Validate Stripe Webhooks in ApiDog During CI/CD
    • Cách khắc phục lỗi "Error: unable to verify the first certificate on runner"?
    • Lỗi "Not Found" của General Runner Docker Container.
    • Cách thiết lập máy chủ lưu trữ server cho General Runner trong phiên bản Web của Apidog?
    • Vì sao kịch bản kiểm thử theo lịch kết thúc với 0 yêu cầu?
    • Tôi nên làm gì nếu không tìm thấy tham số tải tệp lên trong Runner hoặc CLI?
    • Cách sử dụng Runner để chạy một kịch bản kiểm thử có bước tải tệp lên?
    • Làm thế nào để khắc phục lỗi "Error: unable to verify the first certificate on runner"?
    • Làm thế nào để truy cập và tìm kiếm nhật ký runner nhằm xác định vấn đề khi xảy ra sự cố với runner?
    • Tôi nên làm gì nếu tham số endpoint là tệp tải lên và không thể tìm thấy trong Runner hoặc CLI?
    • Tại sao các bước kiểm thử không được tự động đồng bộ hóa khi trường hợp sử dụng API thay đổi?
    • Tại sao việc sử dụng nhiều dấu đô la trong tài liệu Markdown khiến một số nội dung không hiển thị chính xác?
    • Runner tự lưu trữ có tạo báo cáo kiểm thử trên máy chủ sau khi thực thi một tác vụ không?
    • Tôi có thể thêm bộ xử lý trước/sau thống nhất vào các yêu cầu trong một kịch bản kiểm thử không?
    • Làm thế nào để giữ các giá trị động nhất quán trong một lần chạy kiểm thử tự động?
  • Xuất bản tài liệu API
    • Làm thế nào để ẩn tất cả logo Apidog trong tài liệu đã xuất bản?
    • Khi đặc tả API được cập nhật, tài liệu API có thay đổi không?
    • Làm thế nào để chia sẻ API với cộng tác viên trong Apidog?
    • Làm thế nào để tùy chỉnh domain của tài liệu Apidog?
    • Cách tạo tài liệu đa phiên bản trong Apidog?
    • Phạm vi chia sẻ cho Publish Docs Sites trong Apidog
    • Phạm vi chia sẻ cho danh sách Share Doc trong Apidog
    • Tại sao Share Docs đã xuất bản không hiển thị hostname?
    • Người dùng tài liệu có thể sửa đổi Base URL trong tài liệu được chia sẻ như thế nào?
    • Tôi có thể sao chép một tài liệu Apidog đã được xuất bản để sử dụng trong dự án của mình không?
    • Cách chia sẻ header (ví dụ: Token) trong tài liệu trực tuyến của Apidog?
    • Tại sao thành viên trong nhóm của tôi không thể tìm thấy tài liệu đã xuất bản?
    • Làm thế nào để khắc phục lỗi chứng chỉ SSL hết hạn hoặc lỗi Cloudflare 526 trên miền tùy chỉnh của tôi?
    • Cấu hình SMTP tùy chỉnh thành công, nhưng người dùng trong danh sách cho phép không nhận được email OTP
  • Markdown
    • Làm thế nào để sử dụng thẻ để liên kết đến các trang hoặc endpoint khác nhau trong Apidog?
    • Tại sao một số nội dung không hiển thị đúng khi sử dụng nhiều ký hiệu $ trong tài liệu Markdown?
    • Cách sử dụng hình ảnh nền trong suốt trong Apidog Markdown?
    • Làm thế nào để đặt chiều rộng cột của bảng Markdown?
    • Làm thế nào để chèn API nội bộ, tài liệu, schema dữ liệu hoặc thư mục vào tài liệu Markdown?
    • Làm thế nào để thêm liên kết đến tài liệu hoặc endpoint trong một dự án trong thành phần card của Apidog?
  • Nhánh
    • Làm thế nào để truy cập nhánh sprint?
  • Quản trị
    • Cách cài đặt Apidog client ở chế độ im lặng?
    • Tại sao tôi thấy lỗi 'No Permission' dù có quyền admin?
    • Làm thế nào để kiểm tra số phiên bản của runner?
    • Apidog có hỗ trợ win7 không?
    • Tại sao Apidog hiển thị lỗi "Cannot locate program entry point DiscardVirtualMemory in dynamic link library KERNEL32.dll" sau khi cài đặt?
    • Thay đổi gói đăng ký và hoàn tiền
    • Yêu cầu web hoạt động, nhưng ứng dụng gặp lỗi "read ECONNRESET"—Vì sao?
    • Tại sao tôi không thể mở Apidog sau khi cập nhật hệ thống Windows?
    • Tại sao Apidog không mở được sau khi cập nhật hệ thống Windows
  • Thanh toán
    • Tôi có thể thiết lập một tài khoản thanh toán riêng cho nhóm của mình trong Apidog không?
    • Vấn đề về quyền truy cập nhóm và thanh toán trên Apidog
    • Thành viên nhóm được mời không thể truy cập Apidog.
    • Chuyển một Nhóm trả phí cá nhân sang Tổ chức
  • Tại chỗ
    • Quản lý người dùng và quyền truy cập trong phiên bản Apidog Self-Hosted (Enterprise)
  • Web và client
    • Tải xuống và cài đặt phiên bản Linux Desktop
  1. Kiểm thử tự động

Làm thế nào để truyền dữ liệu giữa các bước kiểm thử?

Trong các kịch bản kiểm thử tự động, việc truyền dữ liệu giữa nhiều yêu cầu là rất phổ biến. Các trường hợp điển hình bao gồm:
Yêu cầu 1 là yêu cầu đăng nhập trả về token; Yêu cầu 2 sử dụng token này để yêu cầu dữ liệu khác.
Yêu cầu 1 trả về một ID; Yêu cầu 2 thực hiện các thao tác dựa trên ID này.
Yêu cầu 1 trả về một danh sách; Yêu cầu 2 sử dụng dữ liệu từ danh sách này.
Đối với các kịch bản như vậy, Apidog cung cấp hai giải pháp khác nhau để xử lý việc truyền dữ liệu giữa các yêu cầu. Bạn có thể chọn giải pháp phù hợp dựa trên vấn đề cụ thể cần xử lý.
Truy xuất dữ liệu từ bước trước: Tính năng này cho phép bạn trực tiếp sử dụng dữ liệu từ các yêu cầu trước đó trong các yêu cầu tiếp theo.
Ưu điểm là đơn giản, không cần đưa thêm biến bổ sung.
Tuy nhiên, tính năng này có thể trở nên hơi bất tiện khi dữ liệu cần được tham chiếu nhiều lần.
Tính năng Truy xuất dữ liệu từ bước trước CHỈ có thể được sử dụng trong mô-đun "Tests" và không thể sử dụng trong mô-đun "APIs".
Sử dụng biến: Thêm "Extract Variables" trong bộ tiền xử lý của yêu cầu trước đó để lưu dữ liệu cần thiết vào một biến, sau đó gọi biến này trong các yêu cầu tiếp theo.
Ưu điểm là thuận tiện khi tham chiếu dữ liệu nhiều lần, nhưng có thể hơi phức tạp hơn đối với các tham chiếu đơn lẻ.
Biến có thể được sử dụng trong cả mô-đun "Tests" và mô-đun "APIs".

Truy xuất dữ liệu từ bước trước#

Hãy xem xét một kịch bản trong đó Yêu cầu 1 là yêu cầu đăng nhập trả về token, và Yêu cầu 2 sử dụng token này để yêu cầu dữ liệu bổ sung.
1
Thêm yêu cầu đăng nhập (Yêu cầu 1) vào kịch bản kiểm thử.
2
Thêm yêu cầu truy vấn (Yêu cầu 2) vào kịch bản kiểm thử.
3
Tham số truy vấn cho Yêu cầu 2 cần bao gồm token do Yêu cầu 1 trả về. Nhấp vào biểu tượng "đũa thần" 🪄 trong trường token ở các tham số truy vấn của Yêu cầu 2 và chọn "Retrieve pre-step data".
4
Chọn Yêu cầu 1 để truy xuất dữ liệu, chọn body phản hồi và sử dụng JSONPath để trích xuất token do Yêu cầu 1 trả về, chẳng hạn như $.token.
5
Nhấp vào Insert, và bạn sẽ thấy {{$.2.response.body.token}} được chèn dưới dạng tham số truy vấn.
6
Nhấp vào nút "Run" trong kịch bản Test để truyền dữ liệu thành công từ Yêu cầu 1 sang Yêu cầu 2.
Tính năng "Retrieve pre-step data" CHỈ KHẢ DỤNG trong mô-đun "Tests" và không có trong mô-đun "APIs".
Khi sử dụng "Retrieve pre-step data", giá trị CHỈ có thể được lấy khi toàn bộ kịch bản kiểm thử được chạy cùng nhau; không thể truy cập giá trị này khi chạy từng bước riêng lẻ.

Tham chiếu dữ liệu từ bước trước bằng cú pháp biến#

Sử dụng ví dụ {{$.2.response.body.token}} từ phần trước:
'2' biểu thị ID bước, có thể tìm thấy trong mỗi bước kiểm thử.
'response.body' cho biết vị trí của dữ liệu từ bước trước. Dữ liệu này có thể bao gồm dữ liệu từ header hoặc body của yêu cầu, hoặc header hay body của phản hồi, cùng các dữ liệu khác. Xem chi tiết bên dưới.
'token' biểu thị dữ liệu 'token' ở cấp tiếp theo trong body. Bạn có thể sử dụng cú pháp JSONPath để trích xuất dữ liệu mong muốn.
Dữ liệu từ bước trước có thể được sử dụng trong nhiều phần khác nhau của yêu cầu, chẳng hạn như tham số yêu cầu, header, xác thực, v.v. Bạn cũng có thể chèn trực tiếp dữ liệu vào body yêu cầu, như minh họa bên dưới.
Điều quan trọng cần lưu ý là nếu bạn cần sử dụng dữ liệu từ bước trước trong các script, bạn không thể tham chiếu trực tiếp các biến bằng cú pháp {{variable}}. Thay vào đó, bạn nên sử dụng pm.variables.get để tham chiếu dữ liệu từ bước trước. Ví dụ:

Tham chiếu cú pháp#

Danh mục Chức năng Ví dụ cú pháp
Yêu cầuURL{{$.<step id>.request.url}}
Tham số đường dẫn{{$.<step id>.request.pathParam.<field name>}}
Truy vấn{{$.<step id>.request.query.<field name>}}
Header{{$.<step id>.request.header.<field name>}}
Body (form){{$.<step id>.request.body.<field name>}}
Body (json){{$.<step id>.request.body.<field path>}}
Phản hồiBody{{$.<step id>.response.body.<field path>}}
Header{{$.<step id>.response.header.<field name>}}
Cookie{{$.<step id>.response.cookie.<field name>}}
Vòng lặpPhần tử (phần tử mảng trong vòng lặp ForEach){{$.<loop step id>.element.<field path>}}
Chỉ mục{{$.<loop step id>.index}}

Sử dụng biến để truyền dữ liệu#

Hãy xem xét một kịch bản trong đó Yêu cầu 1 là yêu cầu đăng nhập trả về token, và Yêu cầu 2 sử dụng token này để yêu cầu dữ liệu bổ sung.
1
Thêm yêu cầu đăng nhập (Yêu cầu 1) vào kịch bản kiểm thử.
2
Trong các bộ hậu xử lý của Yêu cầu 1, thêm một hành động "Extract Variable" để trích xuất $.token thành {{token}}.
Tìm hiểu thêm về Extract variable.
3
Thêm yêu cầu truy vấn (Yêu cầu 2) vào kịch bản kiểm thử.
4
Tham chiếu biến {{token}} trong các tham số truy vấn của Yêu cầu 2.
5
Nhấp vào nút "Run" trong kịch bản Test để truyền dữ liệu thành công từ Yêu cầu 1 sang Yêu cầu 2.
Modified at 2026-06-11 10:23:06
Previous
Cách tạo một kịch bản kiểm thử trong Apidog?
Next
Tại sao tôi không thể tham chiếu thành công dữ liệu bước trước?
Built with