Python 로그인 인터페이스 테스트 문제 기록 및 해결 방법 (건 제품)


최근 로그인 인터페이스 테스트에서 다음과 같은 시나리오가 발견되었습니다. 이번에는 발생한 문제와 해결 프로세스를 기록하겠습니다.

1. 패킷 캡처에서 로그인 작업이 발견되면 세 개의 인터페이스가 연속적으로 요청되고 각 인터페이스가 연결됩니다.

2. 쿠키 정보는 각 요청에 대해 유지되어야하며 다음 인터페이스 요청에 필요합니다.

3. 각 인터페이스에서 반환 된 데이터는 json 형식이 아니므로 데이터를 추출하려면 추가 작업이 필요합니다.

이 문서는이 세 가지 지점에서 시작됩니다.

1. 먼저 패킷 캡처 상황 및 일반 프레임 워크 분석

3 개의 인터페이스를 요청한 다음 하나씩 분석합니다.

① 전체적으로 모두 get request이고 공통 매개 변수는 service, callback, _이며, 제 2 조와 제 3 조에는 다른 매개 변수가 있습니다.

② 첫 번째 인터페이스에서 반환 한 데이터의 데이터 아래 두 필드는 두 번째 인터페이스의 매개 변수입니다.

③ 두 번째 인터페이스에서 반환 된 데이터의 특정 필드는 세 번째 인터페이스의 매개 변수입니다.

위의 내용을 바탕으로 대략적인 프레임 워크 작성

#coding:utf-8
import requests,re
url = "xxxxx"
#tt就代替那个_作为参数了
def login1(service,callback,tt):
    pass
#三条接口相互依赖,第2个接口参数来源第1个接口返回值
def login2():
    pass
#三条接口相互依赖,第3个接口参数来源第2个接口返回值
def login3():
    pass

if __name__ == '__main__':
    service = 'xxxxxx'
    callback = 'xxxxxxx'
    tt = 'xxxxxxx'
    login3(service, callback, tt)

2. 그런 다음 get 요청을 작성하는 것이 정상입니다.

여기서 반환 값은 json 형식이 아니기 때문에 이와 같이 json.loads ()를 작성할 필요가 없습니다. 먼저 인쇄하여 확인하십시오.

3. 위에서 언급했듯이 여기서 lt와 실행은 다음 인터페이스의 매개 변수이므로이 시점에서 그 값을 추출해야합니다.

여기에는 정기적 인 추출이 포함됩니다.

추신 : 디버깅 웹 사이트 http://tools.jb51.net/regex/javascript 권장

Python 정규식 학습 주소 : https://www.jb51.net/article/177521.htm

여기에 파이썬으로 작성하는 것도 간단합니다. 자세한 내용은 아래 스크립트의 설명을 참조하십시오.

def login1(service,callback,tt):
    print("开始执行login1")
    url = url1 + "/sso/login"
    params = {
    
    
        "service":service,
        "callback":callback,
        "_":tt
    }
    req = requests.get(url = url,params=params)
    print(req.text)
    #返回结果转换为字符串
    response_str = str(req.text)
    #正则提取字符串信息,返回列表,提取data下的信息
    m = re.findall(r'{.*?}',response_str)[0]
    #data下就是key-value形式,通过eval()将字符串转换为字典,然后字典中通过key提取到value值
    lt = eval(m)['lt']
    execution = eval(m)['execution']
    return lt,execution

4. 두 번째 인터페이스를 작성하고 첫 번째 인터페이스가 반환 한 것을 가져옵니다.

def login2(service,callback,tt):
    lt,execution = login1(service,callback,tt)
    print("开始执行login2")

실행 중 302 오류가 발견되었습니다.

302 오류 : 리디렉션, 임시 전송을 나타냅니다. URL a를 방문했음을 의미하지만 서버 측의 인터셉터 또는 기타 코드 처리로 인해 URL b로 리디렉션됩니다.

요청을 사용하여 로그인을 시뮬레이션 할 때 request.get (url)을 직접 사용하면 쉽게 302 리디렉션이 발생할 수 있습니다. 이유는 쿠키가 영구적이지 않기 때문입니다 (요청은 쿠키 처리와 함께 제공되지만 영구적이지 않음).

여기에 쿠키를 저장하고 사용해야합니다.

특정 쿠키 사용 경로를 참조하십시오 : https://www.cnblogs.com/liuzhzhao/p/12114453.html

5. 사용 방법을 알고 있으므로 코드를 수정하겠습니다.

다음 스크립트는 조롱박과 같으며 첫 번째 인터페이스의 쿠키 정보는 두 번째 인터페이스에 저장되고 두 번째 인터페이스의 쿠키는 세 번째 인터페이스에 저장됩니다.

전체적으로 완성되어 추후 별도 보완이 필요합니다.
이번 주요 지식 포인트 : 인터페이스 의존성 호출, 쿠키 저장 및 사용, 파이썬 키 정보 정기 추출


마지막으로 : 테스터 혜택

기술 산업에서는 기술 능력을 향상시키고 자동화 프로젝트에 대한 실제 경험을 풍부하게해야합니다. 이는 향후 몇 년 동안의 경력 계획과 테스트 기술의 깊이에 큰 도움이 될 것입니다.

골든 9, 실버 10의 인터뷰 시즌, 취업 시즌, 인터뷰 질문 정리는 오랜 세월 동안 제 습관이되었습니다! 다음은 최근 몇 년 동안의 저의 수집 및 분류입니다. 전체가 [소프트웨어 테스트]를 중심으로 구성되어 있으며 주요 내용에는 Python 자동화 테스트 전용 비디오, Python 자동화 세부 정보, 전체 인터뷰 질문 및 기타 지식 콘텐츠가 포함됩니다.

8 천 연봉을받는 것을 부끄러워하지 말고, 연봉이 2 만 개가 넘는다고 만족하지 말고, 30-45를 받았다고 만족하지 마십시오. 인생은 그다지 적은 급여를받는 것이 아니라 직업을 여는 것입니다.

당신과 내가 만나면 뭔가를 찾을 수 있습니다! WeChat 공개 계정 팔로우를 환영합니다 : [Sad Spicy Article] 216 페이지 분량의 소프트웨어 테스트 엔지니어 인터뷰 책을 무료로 받으십시오. 그리고 해당 비디오 학습 튜토리얼은 무료로 공유 할 수 있습니다!

좋은 기사 추천 :

Ali는 두 번째 측면에 있습니다. 자동화 테스트에 대한 제 이해가 너무 얕은 것으로 나타났습니다.

Appium 자동화 환경 구축

Daniel의 기사를 읽은 후 느린 서버 응답을 두려워하지 않을 것입니다.

추천

출처blog.csdn.net/weixin_50829653/article/details/112967813