VCR. py: HTTP 상호작용 을 자동 으로 모 의 하여 테스트 를 간소화 하고 가속 화 합 니 다.
3746 단어 ide
간단 한 소개
VCR. py 는 HTTP 요청 테스트 를 간소화 하고 가속 화 시 켰 습 니 다. Ruby 의 VCR 라 이브 러 리 Python 버 전 입 니 다. VCR. py 를 처음 실행 할 때 지원 하 는 HTTP 라 이브 러 리 에서 실 행 된 요청 은 모두 기록 되 고 직렬 화 되 어 평면 파일 에 기록 합 니 다. 파일 은 기본적으로 Yml 파일 입 니 다.
이 평면 파일 은 테이프 (cassette) 라 고 불 린 다.관련 코드 를 다시 실행 할 때 VCR. py 는 위 테이프 에 저 장 된 직렬 화 된 요청 과 응답 데 이 터 를 읽 고 HTTP 요청 을 차단 하여 이 요청 에 대응 하 는 응답 값 을 되 돌려 줍 니 다.
즉, 같은 HTTP 요청 에 대해 첫 번 째 는 서버 까지 완전한 HTTP 요청 으로 VCR. py 가 기록 되 고 두 번 째 부 터 는 VCR. py 가 같은 요청 을 차단 하고 테 이 프 를 읽 으 며 첫 번 째 요청 한 데 이 터 를 되 돌려 주 며 두 번 째 는 실제로 HTTP 통신 이 발생 하지 않 는 다 는 것 이다.
이렇게 하면 다음 과 같은 장점 이 있다.
항목 주소:
https://github.com/kevin1024/...
설치 하 다.
VCR. py 는 PyPI 의 패키지 로 Python 3.5 + 를 지원 하 며 pip 를 사용 하면 설치 할 수 있 습 니 다.
pip install vcrpy
VCR. py 는 다음 HTTP 네트워크 라 이브 러 리 를 지원 합 니 다.
간단히 사용 하 다
먼저 다음 코드 를 보십시오.
import vcr
import urllib2
with vcr.use_cassette('fixtures/vcr_cassettes/synopsis.yaml'):
response = urllib2.urlopen('http://www.iana.org/domains/reserved').read()
assert 'Example domains' in response
이상 코드 를 실행 하면 VCR. py 는 요청 을 fixtures / vcr \ 에 기록 합 니 다.cassettes/synopsis.yaml。
다시 실행 할 때 HTTP 요청 을 보 낼 때 VCR. py 는 파일 에 저 장 된 응답 값 을 직접 되 돌려 줍 니 다.
이 테스트 는 현재 빠 른 (HTTP 요청 을 하지 않 고 네트워크 에 접근 하지 않 음), 확 정 된 (클 라 이언 트 오프라인 이나 서비스 지연 도 테스트 할 수 있 음), 정확 한 (응답 값 은 모두 실제 요청 에서 얻 은 것) 입 니 다.
장식 기 를 통 해서 도 사용 할 수 있 습 니 다. 아래 코드 는 위의 코드 와 같 습 니 다.
@vcr.use_cassette('fixtures/vcr_cassettes/synopsis.yaml')
def test_iana():
response = urllib2.urlopen('http://www.iana.org/domains/reserved').read()
assert 'Example domains' in response
장식 기 를 사용 할 때 테이프 경 로 를 생략 할 수 있 습 니 다. 이 경우 테이프 파일 은 테스트 파일 과 같은 디 렉 터 리 에 놓 여 있 고 파일 이름 은 테스트 함수 와 같 습 니 다.
배치 하 다.
VCR 의 기본 설정 이 마음 에 들 지 않 으 면 VCR 인 스 턴 스 를 자체 적 으로 예화 하고 인 자 를 정의 할 수 있 습 니 다.
import vcr
my_vcr = vcr.VCR(
serializer='json',
cassette_library_dir='fixtures/cassettes',
record_mode='once',
match_on=['uri', 'method'],
)
with my_vcr.use_cassette('test.json'):
# your http code here
기본 설정 을 수정 할 수도 있 습 니 다:
with vcr.use_cassette('test.yml', serializer='json', record_mode='once'):
# your http code here
요청 일치
요청 일치 도 설정 할 수 있 습 니 다. 즉, 두 HTTP 요청 이 같은 요청 인지 여 부 를 판단 하 는 규칙 을 수정 할 수 있 습 니 다.기본 규칙 은 같은 URL 과 HTTP 방법 (POST, GET 등) 을 가 진 요청 이 같은 요청 입 니 다.match 를 통 해 \on 설정 을 진행 하고 다음 설정 가능 한 항목 을 제공 합 니 다:
인기 있 고 재 미 있 으 며 실 용적 인 오픈 소스 프로젝트 를 일상 적 으로 공유 합 니 다.Python, Java, C / C + +, Go, JS, CSS, Node. js, PHP,. NET 등 10 만 + Star 의 오픈 소스 기술 자원 라 이브 러 리 유지 에 참여 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
코더를 위한 10가지 유용한 vim 명령이러한 명령을 사용하려면 명령 모드(pres Esc)에 있어야 합니다. o(작게)를 눌러 커서 아래에 새 줄을 추가하거나 O(크게)를 눌러 커서 위에 새 줄을 추가합니다. 프레스 Ctrl + v 화살표 키로 선 선택...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.