paint-brush
Nhà viết kịch và Cypress cho các thử nghiệm tự động API REST: Ai đứng đầu?từ tác giả@bormando
8,588 lượt đọc
8,588 lượt đọc

Nhà viết kịch và Cypress cho các thử nghiệm tự động API REST: Ai đứng đầu?

từ tác giả Dmitrii Bormotov3m2023/09/05
Read on Terminal Reader

dài quá đọc không nổi

Cypress là một khung tự động hóa thử nghiệm với mục đích kép - phạm vi kiểm tra UI & API. Playwright có mục đích tương tự, nhưng nó không đi kèm với bất kỳ trình duyệt nào - bạn phải cài đặt chúng bằng một lệnh riêng (nếu muốn). Khi nói đến công cụ nhẹ và nhanh nhất - chắc chắn đó sẽ là Playwright, vì mất ít thời gian cài đặt hơn và không tiêu tốn thêm tài nguyên để trình duyệt chạy, vì không cần phải kiểm tra API.
featured image - Nhà viết kịch và Cypress cho các thử nghiệm tự động API REST: Ai đứng đầu?
Dmitrii Bormotov HackerNoon profile picture

Xin chào tất cả mọi người!


Tôi luôn hoài nghi về các khung tự động hóa thử nghiệm với mục đích kép - phạm vi thử nghiệm UI & API. Thông thường, bạn sẽ chạy các lớp thử nghiệm khác nhau trong các lần chạy thử nghiệm (hoặc dự án sự kiện) khác nhau, vì mỗi lớp có thể có riêng sự phụ thuộc , cấu hình, biến môi trường .


Gần đây, tôi đã xem Playwright cung cấp những gì về mặt thử nghiệm API và so sánh nó với trải nghiệm Cypress của tôi, vì vậy đây là những gì tôi muốn chia sẻ với các bạn…

cây bách

Cypress đã thực hiện thử nghiệm API cách đây không lâu. Bạn có thể tìm thấy một bài viết trên cổng tìm hiểu về mức độ tuyệt vời của công cụ này trong việc kiểm tra API kèm theo các ví dụ.

Hiệu suất cài đặt

Để chạy thử nghiệm, bạn cần cài đặt các phần phụ thuộc của dự án, đúng không? Chà, Cypress đi kèm với một trình duyệt điện tử và việc cài đặt có thể khá dư thừa (và tốn thời gian) nếu bạn chỉ muốn chạy thử nghiệm API (giả sử, bạn có các công việc riêng biệt trong CI cho các lần chạy thử nghiệm UI & API, thường là vậy).


Thời gian cài đặt sạch Cypress


Trông không ổn lắm phải không? ☝️


Ngoài ra, khi bạn chạy thử nghiệm API - nó vẫn khởi chạy trình duyệt.


Cypress chạy phiên trình duyệt trên thông số API


Bản ghi thông số kiểm tra API trong trình duyệt

Ví dụ kiểm tra

Một thử nghiệm API đơn giản với Cypress sẽ như thế này:


 it('Sign in with valid credentials', () => { cy.request('POST', '/auth', { login: Cypress.env('username'), password: Cypress.env('password'), }).should(response => { expect(response.body.token).to.be.a('string') expect(response.status).to.eq(200) }) })


Trông khá đẹp

Nhà viết kịch

Giống như Cypress , Playwright là một khung tự động hóa thử nghiệm - bạn chỉ có thể sử dụng riêng một công cụ tự động hóa trình duyệt hoặc toàn bộ khung (trình chạy thử nghiệm, thư viện xác nhận, công cụ tự động hóa trình duyệt, ứng dụng khách HTTP, trình báo cáo, v.v.).

Hiệu suất cài đặt

Sự khác biệt ở đây là Playwright không có sẵn bất kỳ trình duyệt nào - bạn phải cài đặt chúng bằng một lệnh riêng (nếu muốn).


Nhà viết kịch sạch thời gian cài đặt


Điều này tạo ra sự khác biệt lớn ở đây, vì khi chỉ chạy thử nghiệm API , nó sẽ không chạy bất kỳ trình duyệt hoặc bất kỳ ứng dụng máy tính để bàn nào khác và tiết kiệm một số thời gian và tài nguyên chạy trên máy của bạn.

Ví dụ kiểm tra

Một thử nghiệm API đơn giản với Playwright sẽ như thế này:


 import {test, expect} from '@playwright/test' test('Sign in with valid credentials', async ({request}) => { const response = await request.post('/auth', { data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, }) expect(response.status()).toEqual(200) expect(await response.json()).toEqual({ token: expect.any(String), }) })


Tôi muốn nêu bật một cú pháp giống như Jest để xác nhận các đối tượng:


 expect(await response.json()).toEqual({ token: expect.any(String), })


Cú pháp này cho phép bạn xác minh toàn bộ cấu trúc của đối tượng chỉ bằng một lệnh gọi expect ☝️

Phần kết luận

Các thử nghiệm API được cho là nhỏ và nhẹ vì chúng không yêu cầu chạy quá nhiều.


Hãy tóm tắt các tài liệu trên…

Hiệu suất cài đặt

Nhà viết kịch giành chiến thắng với khả năng cài đặt sạch sẽ nhanh hơn 13 lần ngay từ đầu.


ℹ️ Bạn có thể giảm thời gian cài đặt Cypress trong CI nếu sử dụng hình ảnh có phần phụ thuộc được cài đặt sẵn hoặc lưu chúng vào bộ lưu trữ CI của bạn.

Chạy hiệu suất

Nhà viết kịch chiến thắng vì không yêu cầu trình duyệt chạy thử nghiệm API mà đi thẳng vào vấn đề.


ℹ️ Không có cách nào để “không chạy” trình duyệt trong các thử nghiệm API, vì đó là một phần logic của khung.

Cú pháp kiểm tra

Không thể chọn người chiến thắng ở đây vì không có lợi thế khách quan nào cho cả CypressPlaywright .


Cả hai đều có cú pháp khá đơn giản với một số khác biệt nhỏ. Tôi muốn nói rằng việc chọn những gì họ thích ở đây là quyết định của người thử nghiệm.

Tổng thể

Tôi chắc chắn có thể nói rằng nó đủ an toàn để sử dụng Playwright để tự động hóa thử nghiệm API do hiệu suất của nó. Đó sẽ là một giải pháp công bằng nếu bạn đã thực hiện các bài kiểm tra giao diện người dùng với khung này.


Lời khuyên của tôi dành cho những người sử dụng Cypress để kiểm tra giao diện người dùng và muốn bao phủ lớp API - tốt hơn hãy sử dụng thứ khác ( Jest + Axios , bạn có thể xem ví dụ ở đó ).