방법을 기반으로 포장 ##
### 기본 환경 관리
> 사용 YML 파일이 환경 할, 구성 관리
<! - env.yml ->
``YAML
QA : Actiteepi : // kkbadukcom
UAT : Actiteepi : // uatkbadukcom
자극 : Actiteepi : // wwvkbadukcom
```
<! - load_yaml.py ->
``파이썬
수입 YAML의
수입 운영 체제
DEF (ENV = 'QA') get_host :
. 파일명 = os.path.join (os.path.dirname (__ FILE__) 'env.yml')를 교체 (
"\\", "/")
를 연 (파일명 'R', 인코딩 = "UTF-8")와 같은 F :
호스트 = yaml.load (f.read ())
복귀 hosts.get (ENV, 없음)
``
<! - test_load_yaml.py ->
```파이썬
수입 pytest
load_yaml 수입 get_host에서
데프 test_host_in_yaml ()
결과 = get_host ( "QA")
결과를 주장 == 'http://qa.baidu.com'
DEF test_host_not_in_yaml ()
결과 = get_host ( '데브')
결과를 주장 없음입니다
``
모듈 로그 ###
데코레이터 구현> 로그 모듈
<! - api_log.py ->
```파이썬
수입 로깅
logging.basicConfig (형식 = '[% (asctime과) (S)] % (메시지) S'= 레벨 logging.INFO)
데프 로거 (FUNC) :
'' '
기능을 실행하기 전에 및 함수 실행 후 일부 로그 정보를 추가합니다
' ''
DEF 랩퍼 (* ARG ** kw)
: logging.info ( "}}, {{{} 및 파라미터이었다 기능을 실행하기 시작".
형식 (FUNC .__ name__, 인수, kw))
FUNC (* ARG * * kw)
logging.info ( "기능의 실행을 완료 {}". 형식 (FUNC .__ name__))
래퍼를 반환
```
기본 기능 패키지 ###
<! - Session.py ->
```파이썬
요청에서 세션을 가져
데프 된 get_session () :
세션과 마찬가지로 S :
리턴의
```
<! - api_helpper.py ->
```파이썬
요청에서이 세션 가져
오기 로깅을
logging.basicConfig (형식 = '[% (asctime과) (S)] % (메시지) S'= 레벨 logging.INFO)
데프 된 get_session () :
S 등의 세션 ()와 :
반환의
클래스 BaseApi (객체) :
데프 __init __ (자기 세션) :
self.session = 세션
self.timeout = 30
self.verify = 거짓
데프 _GET (자기, URL, PARAMS, 헤더 = {}) :
시도 :
logging.info (. " '} {'요청에 시작"형식 (URL))
응답 = self.session.get (
URL = URL,
PARAMS = PARAMS,
초과 = self.timeout,
확인 = self.verify,
헤더 = 헤더)
logging.info ( "요청 된 파라미터는"{} "였다."형식 (PARAMS))
logging.info ( "응답 상태 코드 { '이었다 } "형식 (.
response.status_code))
E 같은 예외를 제외 :
응답 = '{}'(. 형식 E)는
logging.error (
" '} { "요청은 실패하고, 에러 메시지가 있었다'포맷 (E). )
마지막으로 :
응답을 반환
```
포장 작업하는 방법 ##
<! - BaiDu.py ->
``파이썬
클래스 바이 (BaseApi)
DEF get_baidu_index (자기 호스트 = r'http : //www.baidu.net 'URI = R'/ ')
응답 self._get = ('{{}} .format (호스트, URI) PARAMS = 없음)
복귀 response.text, response.status_code
``