728x90

test 12

Unittest

Python 내장 모듈로, 단위 테스트를 위한 프레임워크다. Junit에서 영감을 받아 비슷한 특징을 갖고 있다.테스트 케이스 작성, 테스트 스위트 구성, 테스트 실행 (assert 검증), 테스트 결과 보고 등의 다양한 기능을 제공한다. import unittest# 테스트할 함수def add(x, y): return x + y# 테스트 케이스 정의class TestOperation(unittest.TestCase): def test_add(self): result = add(10, 5) self.assertEqual(result, 15) # 기대 값과 실제 값이 같은지 확인# 테스트 실행if __name__ == '__main__': unittest...

Testrail - 소프트웨어 테스트 수행 및 품질 리포트 3

테스트 수행 및 품질 리포트라는게 3판이라는데 있는줄도 몰랐다...ㅋㅋ 그만큼 관심이 없단 ㄸㅅ... QA 쪽도 이런 리포트가 있으니 여간 반갑지 않을 수가 없긴한데, 신기하기도 하다... 아직또 많은 QA들이 기능 자동화보다 수동으로 기능, 회귀 등 테스트 하는 수치가 상당하더라 또한 자동화를 한다고하면 역시 회귀(regression)에서 수행을 한다고 한다.또한 도구들도 나오지만, 역시 Selenium 인가 싶다. Python 때문인가 싶기도하고.. 자동화 뿐 아니라, 테스트 관련 Bug Tracking 등 수행계획 시작에 대한 것들 관련해서도 있다보니 의외로 볼만 한듯. (제3판) 소프트웨어 테스트 수행 및 품질 리포트.pdf - Google Drive (제3판) 소프트웨어 테스트 수행 및 품질 리..

QA 2024.08.28

--grep @smoke

import { test, expect, Page } from '@playwright/test';test.describe('Login Page', () => { test('이메일 형태 미입력', async ({ page }: { page: Page }) => { await page.goto('/', { timeout: 120000 }); await page.getByPlaceholder('입력').fill('abcd'); await page.locator("[type=submit]").click(); // 로그인 에러 메시지 검증 await expect(page.getByText('이메일 형식을 확인해주세요.')).toBeVisible(); }); test('존재하지 않는..

Requests API 테스트

API를 테스트 하기 위해서는 http 관련 라이브러리가 필요한데, python 에서는 requests를 쓴다. requestsPython HTTP for Humans.pypi.orgnode에 axios 같은?import requestsdef get_data_from_api(url): response = requests.get('https://api_url.com') response.raise_for_status() //https 오류가 발생하면 예외가 발생 됨 assert response["id"] == 1 # 응답에서 특정 키의 값 확인 raise_for_status() 는 bad request (a 4XX client error or 5XX server error resp..

Programming/Pytest 2024.08.15

Playwright - Page Object Model

이전에 cypress에서 잠깐 소개했지만, 테스트 하려는 대상 (웹)을 페이지의 구분으로 테스트를 설계하는 패턴이다. https://playwright.dev/docs/pom Page object models | PlaywrightIntroductionplaywright.dev  간단하게 예를 들어 naver에 검색을 한다고 할 때,위에 폴더에 pages 에 home-page.ts를 생성한다. 당연히 네이버에 구성요소야 짱 많겠지만, 일딴 아래의 검색의 기준을 먼저 테스트 한다고 가정했을 때,   위에 두 버튼이 우선 필요할 것이다. typescript는 둘째 치고, home-page.ts 에서 해당 요소와 검색하려는 기능을 구현하고import type { Page, Locator } from '@pla..

github actions - repository_dispatch

Github Action에서 A 저장소의 빌드 또는 어떤 Github Action이 종료되면, 다른 B 저장소의 Action을 호출하는 방식을 통해 테스트 Workflow를 하면 좋겠다라고 생각을 많이 했지만, 요즘 시간이 남아도니 실제로 알아보고 테스트 해봤다. 기본적으로 다른 저장소에 트리거를 거는 방법은 repository_dispatch 을 사용한다. 워크플로를 트리거하는 이벤트 - GitHub Docs GitHub에 대한 특정 작업이 예약된 시간에 발생하거나 GitHub 외부의 이벤트가 발생할 때 실행되도록 워크플로를 구성할 수 있습니다. docs.github.com 추가적으로 저 dispatch는 api 호출에서 event_type을 맞추면 되기 때문에, 사실상 다른 github actions..

Etc 2023.06.05

cypress-file-upload

테스트 하려는 web에서 파일 업로드가 있는 경우, 아래 npm 모듈을 통해 지원이 가능하다. www.npmjs.com/package/cypress-file-upload cypress-file-uploadA Cypress command for file uploadwww.npmjs.com각 여러가지 형태로 지원이 된다.  // HTML5 file inputcy.get('[data-cy="file-input"]') .attachFile('myfixture.json');// Attaching multiple filescy.get('[data-cy="file-input"]') .attachFile(['myfixture1.json', 'myfixture2.json']);// Drag-n-drop component..

Automation/Cypress 2021.03.05

sibling, parent

DOM Node의 Sibling이나 Parent를 접근하려고 했었었는데, 기본 예제에는 항상 답이 있었다.cy.xpath('//a[text()="Completed Story"]/parent::div/parent::div/parent::td/following-sibling::td/button') .should(($button) => { expect($button.get(0).innerText).to.eq('Completed')}) Cypress Open을 통해 맨 처음 만들어진 예제들을 재 확인 해보면, siblings와, parent를 접근할 수 있는 것이 있었다.it('.siblings() - get all sibling DOM elements', () => { // https://on.cyp..

Automation/Cypress 2020.11.26
728x90