Hướng dẫn xác thực phản hồi API với HttpRunner 4.x

Tổng quan về cơ chế kiểm tra

Trong phiên bản 4.x, HttpRunner đã tích hợp sẵn một hệ thống đa dạng các phương thức để xác minh kết quả trả về từ máy chủ. Việc sử dụng các công cụ kiểm tra (validation) giúp đảm bảo dữ liệu nhận được khớp với các mong đợi đã định trước trong kịch bản kiểm thử.

Danh sách các phương thức断言

Dưới đây là bảng tổng hợp các từ khóa hỗ trợ sẵn cùng với các dạng viết tắt tương ứng mà người dùng có thể sử dụng trong file cấu hình:

Từ khóa chính Các dạng viết tắt Chức năng
equal "eq", "equals", "equal" Kiểm tra sự bằng nhau
less_than "lt", "less_than" Kiểm tra giá trị nhỏ hơn
less_or_equals "le", "less_or_equals" Kiểm tra giá trị nhỏ hơn hoặc bằng
greater_than "gt", "greater_than" Kiểm tra giá trị lớn hơn
greater_or_equals "ge", "greater_or_equals" Kiểm tra giá trị lớn hơn hoặc bằng
not_equal "ne", "not_equal" Kiểm tra sự khác biệt
string_equals "str_eq", "string_equals" So sánh sau khi chuyển đổi sang chuỗi
length_equal "len_eq", "length_equal" So sánh độ dài bằng nhau
length_greater_than "len_gt","length_greater_than" Độ dài lớn hơn
length_greater_or_equals "len_ge","length_greater_or_equals" Độ dài lớn hơn hoặc bằng
length_less_than "len_lt", "length_less_than" Độ dài nhỏ hơn
length_less_or_equals "len_le", "length_less_or_equals" Độ dài nhỏ hơn hoặc bằng
contains - Giá trị kiểm tra chứa giá trị mong đợi
contained_by - Giá trị mong đợi chứa giá trị kiểm tra
type_match - Kiểm tra khớp kiểu dữ liệu
regex_match - Khớp biểu thức chính quy
startswith - Kiểm tra chuỗi bắt đầu bằng
endswith - Kiểm tra chuỗi kết thúc bằng

Hai kiểu cú pháp khai báo

Khi định nghĩa phần validate, người dùng có thể lựa chọn giữa cú pháp ngắn gọn hoặc cú pháp chi tiết để phù hợp với độ phức tạp của kịch bản.

Kiểu 1: Cú pháp rút gọn

Phù hợp cho các kiểm tra nhanh, cú pháp này chỉ yêu cầu cặp giá trị kiểm tra và giá trị mong đợi.

validate:
  - eq: [status_code, 200]
  - eq: [body.data.token, "xyz_12345"]
  - eq: [body.meta.source, "192.168.1.50"]
  - eq: [headers."Content-Type", "application/json"]

Kiểu 2: Cú pháp chi tiết

Cho phép định nghĩa rõ ràng từng thành phần bao gồm điểm kiểm tra, phương thức断言, giá trị kỳ vọng và thông báo lỗi tùy chọn.

validate:
  - check: status_code
    assert: equal
    expect: 200
    message: Xác thực mã trạng thái HTTP
  - check: body.data.id
    assert: not_equal
    expect: 0
    message: ID người dùng không được bằng 0

Kịch bản kiểm thử mẫu

Ví dụ dưới đây minh họa một quy trình xác thực người dùng thông qua API, sử dụng các biến môi trường và nhiều lớp kiểm tra khác nhau.

config:
  name: Kiem_tra_xac_thuc_nguoi_dung

teststeps:
-
  name: goi_api_dang_nhap
  variables:
    user_id: developer_01
  request:
    method: POST
    url: https://gateway.test-env.io/auth/access
    json:
      account: ${user_id}
      credential: "secure_pass_99"

  validate:
    - eq: [status_code, 200]
    - eq: [body.data.account, "developer_01"]
    - eq: [body.data.status_msg, "Thanh cong"]
    - eq: [headers."Content-Type", "application/json"]

Kiểm tra chứa ký tự (Contains)

Hàm containscontained_by được sử dụng để kiểm tra mối quan hệ bao hàm giữa các giá trị. Trong đó:

  • check_value: Dữ liệu thực tế nhận được từ phản hồi.
  • expect_value: Giá trị mong đợi, có thể là list, tuple, dict hoặc chuỗi ký tự.
config:
  name: Kiem_tra_chua_ky_tu

teststeps:
-
  name: goi_api_dang_nhap
  variables:
    user_id: developer_01
  request:
    method: POST
    url: https://gateway.test-env.io/auth/access
    json:
      account: ${user_id}
      credential: "secure_pass_99"

  validate:
    - eq: [status_code, 200]
    - eq: [body.data.account, "developer_01"]
    - contains: [body.data.token, "session_2024"]
    - eq: [body.data.status_msg, "Thanh cong"]
    - eq: [headers."Content-Type", "application/json"]

Thẻ: httprunner api-testing validation yaml-config automation-framework

Đăng vào ngày 20 tháng 5 lúc 06:12