- Pytest는
test_*이라는 함수를 찾고 일반assert문으로 확인합니다. - Fixtures는 단순히 인수로 이름을 지정하여 요청되는 재사용 가능한 설정 및 정리를 제공합니다.
@pytest.mark.parametrize은 많은 입력을 사용하여 하나의 테스트를 실행합니다.- 공유 조명기를
conftest.py에 넣으면 가져올 필요가 없습니다.
테스트 작성이 번거로워서 피했다면 이 pytest 튜토리얼을 통해 마음이 바뀔 것입니다. Pytest는 대부분의 의식을 제거합니다. 상속할 클래스도 없고 기억할 특별한 어설션 메서드도 없습니다. 테스트는 단 두 줄이면 됩니다.
우리는 작은 장바구니를 만들고 단계별로 테스트할 것입니다. 우리는 pytest 9.2를 사용하여 Python 3.13에서 모든 것을 실행했으며 표시된 출력은 실제이지만 컴퓨터에 따라 다를 파일 경로와 타이밍 세부 정보를 다듬었습니다.
왜 파이테스트인가?
Python에는 잘 작동하는 unittest이 포함되어 있지만 일반적으로 pytest가 더 편리한 선택입니다. 다음은 각각 동일한 검사입니다.
| 작업 | 단위 테스트 | 파이 테스트 |
|---|---|---|
| 동등성 확인 | self.assertEqual(a, b) |
a == b를 주장하다 |
| 예외 확인 | self.assertRaises(...) |
pytest.raises(...) |
| 테스트 구조 | TestCase에서 상속되는 클래스 |
일반 기능 |
| 설정 및 정리 | setUp 및 tearDown 방법 |
재사용 가능한 설비 |
| 많은 입력 | subTest 루프 |
매개변수화하다 |
Pytest는 기존 unittest 테스트를 실행할 수도 있으므로 점진적으로 전환할 수 있습니다. 적용 범위를 위한 pytest-cov와 병렬 실행을 위한 pytest-xdist을 포함하여 대규모 플러그인 생태계도 있습니다.
파이테스트 설치
Python 가상 환경 튜토리얼에 설명된 대로 먼저 가상 환경을 생성한 다음 설치합니다.
pip install pytest
pytest --version
# pytest 9.2.0
cart.py과 test_cart.py라는 두 개의 파일이 포함된 프로젝트 폴더를 만듭니다. Pytest는 이름 지정 규칙(test_*.py 또는 *_test.py라는 이름의 파일, test로 시작하는 함수, Test으로 시작하는 클래스)에 따라 자동으로 테스트를 찾습니다. 테스트가 선택되지 않는 경우 가장 먼저 확인해야 할 것은 명명 불일치입니다.
테스트할 코드
# cart.py
class Cart:
def __init__(self):
self.items = []
def add(self, name, price, qty=1):
if qty < 1:
raise ValueError("qty must be at least 1")
self.items.append((name, price, qty))
def total(self, discount=0):
subtotal = sum(price * qty for _, price, qty in self.items)
return round(subtotal * (1 - discount / 100), 2)
첫 번째 테스트
# test_cart.py
from cart import Cart
def test_empty_cart_is_free():
assert Cart().total() == 0
그것은 완전한 테스트입니다. 프로젝트 폴더에서 pytest을 실행하면 하나의 테스트 통과를 보고합니다. 가져오기 오류가 발생하면 현재 폴더를 가져오기 경로에 추가하는 python -m pytest로 실행하세요.
읽기 실패
이것이 바로 pytest가 정말 빛을 발하는 부분입니다. 다음은 의도적으로 잘못된 기대값을 사용한 테스트입니다.
def test_wrong_total():
c = Cart()
c.add("Keyboard", 1500)
assert c.total() == 1400
그리고 이것이 우리가 그것을 실행했을 때 인쇄된 내용입니다:
def test_wrong_total():
c = Cart()
c.add("Keyboard", 1500)
> assert c.total() == 1400
E assert 1500.0 == 1400
E + where 1500.0 = total()
FAILED fail_example.py::test_wrong_total - assert 1500.0 == 1400
============================== 1 failed in 0.12s ==============================
>은 실패한 줄을 표시하고 E 줄은 실제 값을 표시합니다. pytest가 비교한 내용을 보고할 수 있도록 assert 문을 다시 작성하므로 사용자 정의 메시지를 추가할 필요가 없었습니다. 목록과 사전에 대해서도 동일한 작업을 수행하여 정확히 어떤 항목이 다른지 지적합니다.
테스트 예외
오류 처리도 동작이므로 테스트할 가치가 있습니다. pytest.raises은 블록이 예상되는 예외를 발생시키는 경우에만 통과합니다.
import pytest
def test_rejects_zero_qty():
with pytest.raises(ValueError, match="at least 1"):
Cart().add("Pen", 10, qty=0)
선택적 match 인수는 정규식을 사용하여 메시지를 확인하므로 다른 ValueError가 실수로 전달되지 않습니다. 이와 같은 오류를 발생시키고 처리하는 방법을 알아보려면 Python 예외 처리 가이드를 읽어보세요.
설비: 재사용 가능한 설정
대부분의 테스트에는 먼저 준비된 것이 필요합니다. Fixture는 그것을 제공하는 기능입니다. 이를 @pytest.fixture로 장식하면 이를 인수로 명명하는 테스트는 모두 결과를 받습니다.
@pytest.fixture
def cart():
c = Cart()
c.add("Keyboard", 1500)
c.add("Mouse", 500, qty=2)
return c
def test_total(cart):
assert cart.total() == 2500
각 테스트는 기본적으로 새로운 카트를 가져오므로 테스트는 서로 영향을 미칠 수 없습니다. Pytest는 인수 이름을 조명기 이름과 일치시키며, 사용자가 직접 조명기를 호출하지 않습니다. @pytest.fixture은 파이썬 데코레이터 설명에서 설명하는 데코레이터입니다.
수율로 정리
나중에 정리가 필요할 때는 return 대신 yield을 사용하세요. 테스트가 실패하더라도 yield 이후의 코드는 테스트가 완료되면 실행됩니다.
@pytest.fixture
def temp_db():
print("\nopen db")
yield {"users": []}
print("close db")
def test_db(temp_db):
assert temp_db["users"] == []
-s을 실행하여 인쇄된 출력물을 표시하면 주문이 개설되었음을 확인하고 테스트한 다음 마감합니다.
Fixture 범위 및 conftest.py
기본적으로 Fixture는 테스트당 한 번 실행됩니다. 데이터베이스나 브라우저와 같이 비용이 많이 드는 설정의 경우 scope을 사용하여 수명을 변경하세요.
| 범위 | 당 한 번씩 생성됨 |
|---|---|
function (기본값) |
테스트 |
수업 |
테스트 클래스 |
모듈 |
파일 |
패키지 |
패키지 |
세션 |
전체 테스트 실행 |
여러 파일에서 사용하는 픽스처를 conftest.py이라는 파일에 넣습니다. Pytest는 이를 자동으로 로드하므로 테스트에서는 가져오기 없이 해당 픽스처를 사용할 수 있습니다. 그러나 하나의 테스트에서 변경된 내용이 다음 테스트로 유출될 수 있으므로 공유 범위에는 주의하세요.
매개변수화: 하나의 테스트, 많은 입력
각 값에 대한 테스트를 복사하는 대신 사례를 나열하세요.
@pytest.mark.parametrize("discount, expected", [
(0, 2500),
(10, 2250),
(100, 0),
])
def test_discount(cart, discount, expected):
assert cart.total(discount) == expected
각 행은 자체 테스트가 되며 전체 파일 실행의 자세한 출력에서 이를 확인할 수 있습니다.
test_cart.py::test_total PASSED [ 16%]
test_cart.py::test_discount[0-2500] PASSED [ 33%]
test_cart.py::test_discount[10-2250] PASSED [ 50%]
test_cart.py::test_discount[100-0] PASSED [ 66%]
test_cart.py::test_rejects_zero_qty PASSED [ 83%]
test_cart.py::test_empty_cart_is_free PASSED [100%]
============================== 6 passed in 0.05s ==============================
한 행이 실패하더라도 다른 행은 계속 실행되며 이름을 통해 문제를 일으킨 값을 정확하게 알 수 있습니다. 매개변수화를 cart 고정 장치와 결합했다는 점에 주목하세요. 버그가 발견될 가능성이 있는 값을 선택하려면 경계값 분석을 사용하세요.
팁: 매개변수가 길거나 불분명한 경우 ids=["none", "ten", "full"]를 전달하여 보고서에서 각 사례에 읽을 수 있는 이름을 지정하세요.
유용한 내장 설비
Pytest에는 미리 만들어진 여러 가지 고정 장치가 포함되어 있습니다. 이 두 가지는 특히 편리하며 둘 다 우리 실행에서 통과되었습니다.
def test_write_report(tmp_path):
report = tmp_path / "report.txt"
report.write_text("passed")
assert report.read_text() == "passed"
def read_mode():
return os.environ.get("APP_MODE", "dev")
def test_mode(monkeypatch):
monkeypatch.setenv("APP_MODE", "staging")
assert read_mode() == "staging"
tmp_path은 각 테스트에 고유한 임시 폴더를 제공하므로 테스트는 실제 파일을 건드리지 않습니다. monkeypatch는 환경 변수나 속성을 변경하고 테스트가 끝나면 변경 사항을 취소합니다. 또 다른 유용한 방법은 인쇄된 출력물을 캡처하여 확인할 수 있는 capsys입니다.
마커: 건너뛰기 및 xfail
마커는 테스트에 레이블과 동작을 추가합니다.
@pytest.mark.skip(reason="payment sandbox is down")
def test_payment():
assert False
@pytest.mark.xfail(reason="floating point")
def test_rounding():
assert 0.1 + 0.2 == 0.3
skip 테스트를 전혀 실행하지 않습니다. xfail는 이를 실행하지만 실패를 예상하므로 알려진 문제로 인해 빌드가 중단되지 않습니다. 동일한 파일의 다른 추가 테스트를 사용하여 실행을 3 passed, 1 skipped, 1 xfailed으로 요약했습니다. 그런데 반올림 테스트는 실제로 실패합니다. 부동 소수점 연산에서 0.1 + 0.2는 정확히 0.3이 아닙니다. 소수를 비교할 때는 pytest.approx(0.3)를 사용하세요.
@pytest.mark.slow과 같은 고유한 마커를 만들고 pytest -m slow를 사용하여 해당 마커만 실행하거나 -m "not slow"을 사용하여 제외할 수도 있습니다. 경고를 방지하려면 구성 파일에 맞춤 마커를 등록하세요.
유용한 명령줄 플래그
| 명령 | 기능 |
|---|---|
pytest -v |
각 테스트 이름 표시 |
pytest -q |
더 짧은 요약 표시 |
파이테스트 -x |
첫 번째 실패에서 중지 |
pytest -k 할인 |
이름이 단어와 일치하는 테스트 실행 |
pytest -s |
print 출력 표시 |
pytest --lf |
마지막 실패만 다시 실행 |
pytest --pdb |
실패 시 디버거 열기 |
pytest test_cart.py::test_total |
하나의 특정 테스트 실행 |
CI에서 pytest 실행
테스트는 변경될 때마다 자동으로 실행될 때 가장 가치가 있습니다. 최소한의 GitHub Actions 작업은 다음과 같습니다.
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- run: pip install -r requirements.txt
- run: python -m pytest
테스트가 실패하면 Pytest는 0이 아닌 코드로 종료되며, 이로 인해 파이프라인이 중지됩니다. 이 워크플로 파일을 실행하지 않았으므로 프로젝트에 맞게 조정하세요. GitHub Actions CI/CD 가이드에서 자세한 내용을 설명합니다. Pytest는 Selenium Python 튜토리얼 및 페이지 개체 모델 튜토리얼에서 볼 수 있듯이 브라우저 테스트에도 잘 작동합니다.
마무리
이제 대부분의 Python 테스트 스위트에 필요한 것이 있습니다: 일반 어설션, 설정을 위한 고정 장치, 변형을 위한 매개변수화 및 속도를 위한 몇 가지 플래그. 작게 시작하십시오. 최근에 버그를 수정한 함수 하나를 선택하고 해당 버그에 대한 테스트를 먼저 작성하세요. 각 수준에서 무엇을 테스트해야 할지 확신이 없다면 단위 테스트와 통합 테스트를 읽어보세요.
자주 묻는 질문
pytest는 어디에 사용되나요?
Pytest는 Python 테스트 프레임워크입니다. 단위, 통합 및 API 테스트에 사용되며 Selenium 및 Playwright와 같은 브라우저 도구에서도 잘 작동합니다.
pytest가 단위 테스트보다 나은가요?
많은 팀이 더 간단한 구문, 고정 장치 및 더 명확한 오류로 인해 이를 선호합니다. Unittest는 설치가 필요하지 않으며 pytest는 기존 단위 테스트 테스트도 실행할 수 있습니다.
pytest의 고정물이란 무엇입니까?
픽스처(Fixture)는 데이터나 연결 등 테스트에 필요한 것을 준비하는 기능입니다. 테스트에서는 인수로 이름을 지정하여 이를 받습니다.
conftest.py란 무엇입니까?
테스트 파일 간에 픽스쳐와 후크를 공유하기 위한 특수 파일입니다. Pytest는 이를 자동으로 로드하므로 해당 픽스쳐에는 import 문이 필요하지 않습니다.
pytest가 내 테스트를 찾지 못하는 이유는 무엇입니까?
일반적으로 이름 문제입니다. 파일 이름은 test_*.py 또는 *_test.py여야 하며 함수는 test로 시작해야 합니다. 또한 올바른 폴더에서 실행했는지 확인하십시오.
계속 학습하세요
테스트, WordPress 또는 SEO에 도움이 필요하십니까?
우리는 팀이 더 나은 소프트웨어를 출시하고 사이트를 성장시킬 수 있도록 돕습니다. 현재 진행 중인 작업을 알려주시면 명확한 다음 단계를 제안해 드리겠습니다.
추가 가이드 테스트, AI 및 최신 개발
이 기사가 마음에 드셨나요? 주제를 선택하고 최신 튜토리얼로 바로 이동하세요.
AI 환각 설명: 언어 모델이 사물을 구성하는 이유와 이를 줄이는 방법
AI 환각은 그것이 무엇인지, 언어 모델이 환각을 생성하는 이유, 일반적인 유형, 접지 및 프롬프트를 통해 환각을 줄이는 방법, 그리고 우리가 실행한 간단한 점검에 대해 설명했습니다.
기사 읽기 →DevOps환경 변수 설명: .env 파일, 비밀 및 구성이 올바르게 완료되었습니다.
우리가 실행한 Python 예제를 통해 설명된 환경 변수: 읽기 및 설정, 모든 값이 문자열인 이유, .env 파일, 프로세스 상속, 비밀 및 유효성 검사.
기사 읽기 →소프트웨어 개발API 속도 제한 설명: 알고리즘, 헤더 및 429 오류 처리
우리가 실행한 시뮬레이션을 통해 설명된 API 속도 제한: 토큰 버킷, 고정 창, 슬라이딩 창, 429 응답, 속도 제한 헤더, 백오프를 사용한 재시도 및 테스트 제한.
기사 읽기 →테스트 자동화Python에서 조롱: unittest.mock, 패치 및 테스트를 거짓말로 만드는 실수
Unittest.mock을 사용하여 Python에서 모의, 테스트됨: 모의 및 return_value, 부작용, 이름이 사용되는 패치, 사양 및 자동 사양, 모의 날짜 및 일반적인 실수.
기사 읽기 →소프트웨어 테스트코드 커버리지 설명: 회선 커버리지와 분기 커버리지 및 100%의 실제 의미
실제 Coverage.py 실행을 통해 설명되는 코드 적용 범위: 라인, 분기 및 조건 적용 범위, 보고서 읽기, 100% 적용 범위가 여전히 버그를 놓칠 수 있는 이유 및 합리적인 대상.
기사 읽기 →데이터베이스 및 SQLSQL의 DELETE vs TRUNCATE vs DROP: 차이점, 롤백 및 사용 시기
테스트된 SQL을 통해 DELETE 대 TRUNCATE 대 DROP에 대해 설명합니다. 각각의 제거, 롤백, 트리거, ID 재설정, 속도 및 PostgreSQL, MySQL, SQL Server 및 SQLite의 차이점.
기사 읽기 →데이터베이스 및 SQLSQL 뷰 설명: 예제를 통해 함정 생성, 사용 및 방지
우리가 실행한 쿼리로 설명된 SQL 뷰: 뷰 생성, 실시간 결과, 열 숨기기, 성능, 업데이트 가능하고 구체화된 뷰, 손상된 종속성 및 모범 사례.
기사 읽기 →소프트웨어 개발TypeScript 인터페이스와 유형: 실제 차이점, 컴파일러로 테스트
TypeScript 인터페이스 대 유형, 실제 컴파일러로 확인: 둘 다 할 수 있는 것, 하나만 할 수 있는 것, 선언 병합, 확장 대 교차점 및 따라야 할 간단한 규칙.
기사 읽기 →소프트웨어 개발Python *args 및 **kwargs 설명: 명확한 예가 포함된 유연한 함수
Python *args 및 **kwargs는 우리가 실행한 코드(패킹 및 언패킹, 매개변수 순서, 키워드 전용 및 위치 전용 인수, 데코레이터 및 일반적인 오류)를 설명했습니다.
기사 읽기 →소프트웨어 개발Python Lambda 함수: 구문, 실제 사용 및 사용하지 말아야 할 경우
Python 람다 함수는 구문, 키를 사용한 정렬, 맵 및 필터, 클로저, 후기 바인딩 트랩, 일반 def가 더 나은 선택인 경우 등 우리가 실행한 코드로 설명되었습니다.
기사 읽기 →인공지능AI 에이전트란 무엇입니까? 작동 방식, 간단한 에이전트 루프를 사용하여 실행할 수 있음
AI 에이전트란 무엇입니까? 우리가 실행한 작은 Python 루프, 실제 위험 및 간단한 챗봇이 더 나은 선택일 때 에이전트 루프, 도구, 메모리 및 가드레일에 대한 일반 가이드입니다.
기사 읽기 →DevOps모니터링과 관찰 가능성: 로그, 지표, 추적을 통한 실제 차이점
모니터링과 관찰 가능성 설명: 알려진 오류와 알려지지 않은 오류, 로그, 지표 및 추적, 결제 사건 안내, 골든 신호, OpenTelemetry 및 유용한 경고.
기사 읽기 →DevOpsDocker 볼륨과 바인딩 마운트: 컨테이너 데이터를 올바른 방식으로 유지
Docker 볼륨과 바인드 마운트 설명: 컨테이너 데이터가 사라지는 이유, 명명된 볼륨, 바인드 마운트, tmpfs, Compose 예제, 백업, 권한 및 각 사용 시기.
기사 읽기 →테스트 자동화TDD와 BDD: 주요 차이점, 두 가지 방식으로 구축된 하나의 기능 및 각 사용 시기
TDD와 BDD는 두 가지 방식으로 구축된 하나의 할인 기능, 즉 우리가 실행한 코드를 사용한 적록 리팩토링, 주어진 시점 시나리오, 도구, 장단점 및 각 사용 시기를 설명합니다.
기사 읽기 →소프트웨어 테스트UAT(사용자 승인 테스트): 프로세스, 체크리스트 및 실제 사례
사용자 승인 테스트는 누가 실행하는지, QA와 어떻게 다른지, 7단계 프로세스, UAT 테스트 사례 템플릿, 체크리스트, 승인 기준 및 일반적인 실수에 대해 설명했습니다.
기사 읽기 →데이터베이스 및 SQLSQL NULL 값 설명: IS NULL, COALESCE, NULLIF 및 피해야 할 함정
우리가 실행한 쿼리를 통해 설명된 SQL NULL 값: 3개 값 논리, IS NULL, COALESCE, NULLIF, 집계, 조인 및 정렬이 NULL을 처리하는 방법 및 조용히 발생하는 버그.
기사 읽기 →데이터베이스 및 SQLSQL CASE WHEN 문: 구문, 실제 예 및 일반적인 실수
우리가 실행한 쿼리로 설명된 SQL CASE: 단순 및 검색 양식, 조건 순서, SUM이 있는 피벗, COUNT 트릭, 사용자 정의 정렬, 업데이트 및 피해야 할 NULL 트랩.
기사 읽기 →소프트웨어 개발JWT란 무엇입니까? 실제 예제로 설명되는 JSON 웹 토큰
JWT란 무엇입니까? JSON 웹 토큰은 세 부분, 즉 우리가 실행한 코드에서 구축 및 변조된 토큰, JWT 대 세션, 저장소, 새로 고침 토큰 및 보안 실수를 설명했습니다.
기사 읽기 →소프트웨어 개발JavaScript 이벤트 루프 설명: 예제가 포함된 호출 스택, 마이크로태스크 및 타이머
호출 스택, 작업 및 마이크로태스크 대기열, setTimeout 0이 즉시 실행되지 않는 이유, 차단, 기아 및 인터뷰 퀴즈 등 우리가 실행한 코드로 JavaScript 이벤트 루프를 설명했습니다.
기사 읽기 →소프트웨어 개발Python 생성기 및 수율 설명: 실제 예제로 메모리 절약
Python 생성기와 항복은 우리가 실행한 코드로 설명됩니다. 일시 중지 및 재개 방법, 측정된 메모리 절약, 파이프라인, 무한 시퀀스, 항복, 전송 및 공통 트랩.
기사 읽기 →인공지능임베딩이란 무엇입니까? 벡터와 코사인 유사성을 간단하게 설명
임베딩이란 무엇입니까? 벡터, 코사인 유사성 및 의미론적 검색에 대한 일반 언어 가이드로, 우리가 실행한 작은 예, 일반적인 용도, 모델 선택 및 알려진 한계를 제공합니다.
기사 읽기 →DevOps블루-그린 배포와 카나리아 배포: 차이점, 장단점 및 선택 방법
블루-그린 배포와 카나리아 배포에 대한 설명: 각각의 작동 방식, 비용, 위험 및 롤백, 테스트한 안정적인 사용자 버킷팅, 데이터베이스 마이그레이션, 롤링 업데이트 및 선택 방법.
기사 읽기 →테스트 자동화불안정한 테스트: 원인과 해결 방법
우리가 실행한 데모를 통해 불안정한 테스트에 대해 설명했습니다. 주요 원인, 확인 및 진단 방법, 시기, 공유 상태 및 날짜, 격리 프로세스에 대한 적절한 수정 사항.
기사 읽기 →소프트웨어 테스트부하 테스트와 스트레스 테스트 비교: 차이점, 측정항목 및 k6 예
부하 테스트와 스트레스 테스트 비교 설명: 각각의 증명, 스파이크 및 흡수 테스트, 중요한 측정항목, 평균이 잘못된 이유, k6 예 및 테스트 계획 방법.
기사 읽기 →소프트웨어 테스트테스트 케이스와 테스트 시나리오: 주요 차이점, 예 및 각각의 사용 시기
테스트 케이스와 테스트 시나리오 설명: 명확한 정의, 병렬 테이블, 시나리오에서 케이스로 가져온 하나의 비밀번호 재설정 기능, 템플릿 및 각 사용 시기.
기사 읽기 →데이터베이스 및 SQLSQL 쿼리 최적화: 타이밍에 따라 실행 계획을 읽고 느린 쿼리를 수정합니다.
백만 개의 행에서 테스트된 SQL 쿼리 최적화: 실행 계획 읽기, 올바른 인덱스 추가, 분할할 수 없는 필터 수정, 복합 인덱스 및 키 세트 페이지 매김 사용.
기사 읽기 →데이터베이스 및 SQLSQL UNION 대 UNION ALL: 테스트된 차이점, 예 및 성능
SQL UNION과 UNION ALL은 우리가 실행한 쿼리(중복, 둘 다 따르는 규칙, 실제 데이터 버그, 측정된 성능, INTERSECT 및 EXCEPT, 각각의 사용 시기)를 설명합니다.
기사 읽기 →소프트웨어 개발JavaScript Fetch API 튜토리얼: GET, POST, 오류 처리 및 시간 초과
로컬 서버에 대해 테스트된 JavaScript Fetch API 튜토리얼: GET 및 POST, 404가 발생하지 않는 이유, 재사용 가능한 도우미, 쿼리 문자열, 시간 초과, CORS 및 일반적인 실수.
기사 읽기 →소프트웨어 개발Python 파일 처리: 읽기, 쓰기, CSV, JSON 및 pathlib 예제 포함
우리가 실행한 코드로 설명된 Python 파일 처리: 개방형 모드, 대용량 파일 읽기, CSV, JSON, pathlib, 바이너리 파일, 안전한 쓰기, 오류 처리 및 일반적인 실수.
기사 읽기 →소프트웨어 개발Python 클래스 및 객체: 실제 예제가 포함된 OOP 튜토리얼
우리가 실행한 코드로 설명된 Python 클래스와 객체: __init__, 메소드, 클래스 대 인스턴스 속성, 상속, 속성, 던더 메소드, 데이터 클래스 및 일반적인 실수.
기사 읽기 →인공지능대규모 언어 모델이란 무엇입니까? LLM의 작동 방식, 과대광고 없이 설명
대규모 언어 모델이란 무엇입니까? LLM은 토큰, 임베딩, 주의, 훈련, 온도 및 컨텍스트 창, 작은 다음 단어 데모 및 실제 한계 등 일반 언어로 설명됩니다.
기사 읽기 →DevOps초보자를 위한 Linux 명령: 예제가 포함된 필수 터미널 가이드
탐색, 파일, 로그 보기, grep, 파이프, 권한, 프로세스 및 아카이브 등 작업별로 그룹화된 초보자를 위한 Linux 명령과 실용적인 로그 분석 예제가 포함되어 있습니다.
기사 읽기 →테스트 자동화셀레늄 대 극작가: 주요 차이점, 코드 비교 및 선택할 항목
Selenium과 Playwright 비교: 아키텍처, 대기, 브라우저 및 언어 지원, 디버깅, 두 도구 모두에서 동일한 테스트, 마이그레이션 조언 및 선택 방법.
기사 읽기 →소프트웨어 테스트등가 분할: 실제 예제를 통해 설명되는 테스트 설계 기법
등가 분할 설명: 유효한 파티션과 유효하지 않은 파티션을 찾는 방법, 연령, 비밀번호 및 쿠폰에 대한 작업 예제, 실행한 테스트, 경계와 쌍을 이루는 이유.
기사 읽기 →소프트웨어 테스트소프트웨어 테스팅의 심각도와 우선순위: 차이점, 매트릭스 및 실제 사례
소프트웨어 테스팅의 심각도와 우선순위에 대한 설명: 명확한 정의, 예제가 포함된 4방향 매트릭스, 수준 척도, 각 항목을 설정하는 사람 및 버그 분류 실행 방법.
기사 읽기 →데이터베이스 및 SQLSQL 하위 쿼리 자습서: 유형, 상관 하위 쿼리 및 EXISTS(예제 포함)
스칼라, IN, FROM 및 SELECT 하위 쿼리, 상관 하위 쿼리, EXISTS, NOT IN NULL 트랩 및 하위 쿼리 대 JOIN 대 CTE 등 우리가 실행한 쿼리가 포함된 SQL 하위 쿼리 자습서입니다.
기사 읽기 →데이터베이스 및 SQLSQL 트랜잭션 및 ACID 설명: COMMIT, ROLLBACK 및 격리 수준
COMMIT, ROLLBACK, 저장점, 잠금, 격리 수준, 더티 읽기, 교착 상태 및 모범 사례 등 우리가 실행한 은행 이체를 통해 SQL 트랜잭션 및 ACID를 설명했습니다.
기사 읽기 →소프트웨어 개발Git 명령 치트 시트: 실제로 사용하는 명령과 예제
실제 데모 저장소의 출력과 함께 설정, 준비, 분기, 원격, 숨김, 기록 및 실행 취소 실수 등 작업별로 그룹화된 Git 명령 치트 시트입니다.
기사 읽기 →소프트웨어 개발JavaScript Promises 설명: then, catch, Promise.all 및 일반적인 실수
우리가 실행한 코드로 설명된 JavaScript Promise: 상태, then 및 catch 체인, 오류 처리, Promise.all, allSettled, race 및 기타, 이벤트 루프 및 일반적인 실수.
기사 읽기 →소프트웨어 개발Python 사전 튜토리얼: 방법, 예제 및 일반적인 패턴
우리가 실행한 코드가 포함된 Python 사전 튜토리얼: 사전 생성, 읽기 및 업데이트, 주요 방법, 병합, 이해, 패턴 계산 및 그룹화, 일반적인 실수.
기사 읽기 →인공지능RAG 란 무엇입니까? 실제 예제를 통해 설명되는 검색 증강 생성
RAG란 무엇인가요? 검색 증강 생성은 인덱싱, 청킹, 임베딩, 검색, 소규모로 작동하는 Python 예제, 평가 및 일반적인 실패 등 단계별로 설명됩니다.
기사 읽기 →DevOps초보자를 위한 Terraform 튜토리얼: 첫 번째 파일부터 모듈까지 코드로서의 인프라
초보자를 위한 Terraform 튜토리얼: 클라우드 계정 없이 시작하여 초기화, 계획 및 적용을 배우고 변수, 출력, 상태, 모듈 및 안전한 팀 워크플로를 학습합니다.
기사 읽기 →DevOpsDocker와 Kubernetes: 주요 차이점, 함께 작동하는 방식 및 필요한 사항
Docker와 Kubernetes에 대한 설명: 각각의 기능, 동일한 앱이 두 가지 모두에서 실행됨, Docker Compose와 Swarm 비교, dockershim 변경 사항 및 필요한 사항을 결정하는 방법.
기사 읽기 →테스트 자동화초보자를 위한 Pytest 튜토리얼: 고정 장치, 매개변수화 및 실제 예제
pytest 9.2에서 실행한 테스트(어설션, 픽스쳐, 매개변수화, conftest, 마커, tmp_path, Monkeypatch, 유용한 플래그 및 CI)가 포함된 초보자를 위한 pytest 튜토리얼입니다.
기사 읽기 →소프트웨어 테스트소프트웨어 테스팅 라이프사이클(STLC): 6단계, 시작 및 종료 기준, 예
소프트웨어 테스팅 수명주기는 시작 및 종료 기준, 결과물, 작업된 로그인 기능 예, STLC 대 SDLC 및 Agile의 STLC를 포함하는 6개의 STLC 단계를 설명합니다.
기사 읽기 →소프트웨어 개발Git merge vs rebase: 차이점, 예제, 언제 무엇을 쓸까
Git merge vs rebase를 실제 로그 출력, 비교표, rebase의 황금률, 안전한 팀 워크플로로 설명합니다.
기사 읽기 →소프트웨어 개발파이썬 리스트 컴프리헨션: 문법, 예제, 피해야 할 때
파이썬 리스트 컴프리헨션 설명: 문법, 필터링, if-else, 중첩 반복문, 실제 측정 시간, 그리고 일반 for 반복문이 더 나은 경우.
기사 읽기 →데이터베이스 및 SQL예제로 쉽게 배우는 SQL JOIN (Inner, Left, Right, Full)
샘플 테이블과 쿼리로 SQL JOIN을 단계별로 이해하세요. INNER, LEFT, RIGHT, FULL, CROSS, SELF와 흔한 실수, 성능 팁까지 정리했습니다.
기사 읽기 →