데이터 기반 테스트는 여러 데이터 세트로 동일한 테스트를 실행할 수 있는 강력한 접근 방식입니다. 이 방법은 다양한 입력 조합으로 애플리케이션 동작을 확인하는 데 특히 유용하며 다양한 시나리오를 철저하게 포괄합니다. 이 게시물에서는 효율적이고 유지 관리가 가능한 테스트를 생성하는 기능을 활용하여 Cypress에서 데이터 기반 테스트를 구현하는 방법을 살펴보겠습니다.
데이터 기반 테스트에는 테스트 논리를 테스트 데이터에서 분리하여 다양한 입력으로 테스트를 여러 번 실행할 수 있습니다. 이 접근 방식은 극단적인 사례를 식별하고 비즈니스 논리를 검증하며 애플리케이션이 광범위한 데이터를 올바르게 처리하는지 확인하는 데 도움이 됩니다.
Cypress는 어레이, 고정 장치 및 외부 라이브러리 사용을 포함하여 데이터 기반 테스트를 구현하는 여러 가지 방법을 제공합니다. 예시를 통해 이러한 방법을 살펴보겠습니다.
1. 배열 사용
배열을 사용하여 다양한 테스트 데이터 세트를 저장하고 forEach 메서드를 사용하여 반복할 수 있습니다.
예:
const testData = [ { username: 'user1', password: 'password1' }, { username: 'user2', password: 'password2' }, { username: 'user3', password: 'password3' } ]; describe('Data-Driven Testing with Arrays', () => { testData.forEach((data) => { it(`should log in successfully with username: ${data.username}`, () => { cy.visit('/login'); cy.get('input[name="username"]').type(data.username); cy.get('input[name="password"]').type(data.password); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); }); }); });
2. 설비 사용
Fixture는 테스트 데이터를 JSON 형식으로 저장하는 외부 파일입니다. Cypress를 사용하면 픽스처 파일을 로드하고 테스트에서 데이터를 사용할 수 있습니다.
예:
[ { "username": "user1", "password": "password1" }, { "username": "user2", "password": "password2" }, { "username": "user3", "password": "password3" } ]
describe('Data-Driven Testing with Fixtures', () => { before(() => { cy.fixture('users').then(function (data) { this.users = data; }); }); it('should log in successfully with multiple users', function () { this.users.forEach((user) => { cy.visit('/login'); cy.get('input[name="username"]').type(user.username); cy.get('input[name="password"]').type(user.password); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); cy.visit('/logout'); // Log out after each login }); }); });
삼. 외부 라이브러리 사용
보다 복잡한 데이터 기반 테스트 시나리오의 경우 cypress-plugin-snapshots 또는 cypress-data-driven과 같은 외부 라이브러리를 사용할 수 있습니다.
cypress-data-driven의 예:
npm install cypress-data-driven --save-dev
import dataDriven from 'cypress-data-driven'; const testData = [ { username: 'user1', password: 'password1', expectedUrl: '/dashboard1' }, { username: 'user2', password: 'password2', expectedUrl: '/dashboard2' }, { username: 'user3', password: 'password3', expectedUrl: '/dashboard3' } ]; describe('Data-Driven Testing with External Library', () => { dataDriven(testData).forEach((data) => { it(`should log in successfully with username: ${data.username}`, () => { cy.visit('/login'); cy.get('input[name="username"]').type(data.username); cy.get('input[name="password"]').type(data.password); cy.get('button[type="submit"]').click(); cy.url().should('include', data.expectedUrl); }); }); });
데이터 기반 테스트는 테스트 적용 범위, 유지 관리 가능성 및 효율성을 향상시키는 귀중한 접근 방식입니다. Cypress의 기능을 활용하고 배열, 고정 장치 또는 외부 라이브러리를 사용하면 애플리케이션이 광범위한 입력을 올바르게 처리하는지 확인하는 강력한 데이터 기반 테스트를 구현할 수 있습니다. 모범 사례를 따르면 테스트의 신뢰성과 효율성을 더욱 향상시킬 수 있습니다.
즐거운 테스트를 진행하세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3