Phiên Bản Cơ Bản
Đọc file Excel theo định dạng sau (chỉ Sheet đầu tiên), gửi từng request API, kiểm tra status code trả về là 200, và ghi lại trạng thái cùng thông báo lỗi ngược lại Excel.
Quy tắc định dạng trong Excel:
- URL chứa query parameter cần ghi trực tiếp vào URL, ví dụ: ?a=1&b=2
- Custom headers định dạng key:value, mỗi header một dòng, có thể có khoảng trắng trước và sau dấu :
- Dữ liệu request hỗ trợ form và JSON. Nếu dữ liệu sau khi loại bỏ khoảng trắng trống bắt đầu bằng { hoặc [, sẽ gửi dưới dạng JSON. Ngược lại, gửi dưới dạng form. Biến form và headers định dạng tương tự. Nếu giá trị được bao quanh bởi <>, coi là đường dẫn file và gửi dưới dạng multipart/form-data.
Không sử dụng framework testing khác, tự viết vòng lặp và xử lý exception. Nếu assertion status code != 200 thì trạng thái là FAIL, các lỗi khác là ERROR. Tô màu ô kết quả theo trạng thái.
Phiên Bản Nâng Cao
Tăng cường tính năng trích xuất biến và assertion:
- Sau mỗi request, tạo biến hệ thống response (đối tượng response từ thư viện requests) và lưu vào dictionary context
- Cho phép dùng biến context bằng cú pháp $tên_biến (ví dụ: $response)
- Hỗ trợ assertion bằng biểu thức Python, có thể tham chiếu biến context như: $response.status_code == 200
- Biến được trích xuất có thể dùng trong URL, data, headers, assertion của các request sau
Triển Khai
Đọc Dữ Liệu và Gửi Request
- Đọc file Excel để lấy danh sách các API (bỏ qua hàng tiêu đề hoặc kết hợp với hàng tiêu đề để tạo định dạng dictionary)
- Xử lý và tổ chức dữ liệu theo yêu cầu của phương thức requests.request():
Trong đó:{ "method": "GET", "url": "https://....", "headers": {}, "data": {}, "json": {}, "files": {} }- headers: dictionary, có thể rỗng hoặc None
- data: dictionary chứa dữ liệu form không phải file
- json: chuỗi từ Excel cần dùng json.loads() để chuyển thành dictionary/list
- Duyệt danh sách đã xử lý, gửi request và kiểm tra status code 200. Xử lý exception (tách biệt exception assertion và exception khác). Trạng thái FAIL khi assertion lỗi, ERROR khi các lỗi khác.
- Ghi kết quả ngược vào Excel, tô màu và lưu (hoặc tạo file Excel mới).
Assertion và Trích Xuất Biến
- Đọc các assertion từ ô Excel (đa dòng):
assertion_text = '''$response.json()['form']['name']=='admin' $response.json()['form']['password']=='test' $response.json()['form']['password']==$flag''' - Tách thành từng dòng assertion:
assert_list = assertion_text.split('\n') assert_list = [item.lstrip('$') for item in assert_list] - Gửi request và nhận response:
response = requests.request(**req_params) - Sử dụng exec() và eval() để chạy assertion:
assert eval("response.json()['form']['name']=='admin'") - Xử lý biến $flag:
from string import Template # Trích xuất biến key, value_expr = "flag", "$response.headers['flag']" context[key] = eval(value_expr.lstrip('$')) # Thay thế biến trong assertion rendered_text = Template("response.json()['form']['password']=='$flag'").safe_substitute(context) assert eval(rendered_text)
Tài Liệu Tham Khảo
- Sử dụng thư viện Requests
- thao tác cơ bản với Excel
- Tham khảo triển khai thực tế