Registro e solução do problema de teste de interface de login Python (produtos secos)


Em um teste recente de interface de login, os seguintes cenários foram descobertos. Desta vez, registrarei os problemas encontrados e o processo de resolução:

1. Quando a operação de login é encontrada na captura do pacote, três interfaces são solicitadas sucessivamente, e cada interface é associada

2. As informações do cookie precisam ser retidas para cada solicitação e necessárias para a próxima solicitação de interface

3. Os dados retornados por cada interface não estão no formato json, e operações adicionais são necessárias para extrair dados

Este documento começará a partir desses três pontos

1. Primeiro, olhe para a situação de captura de pacotes e análise de estrutura geral

Solicite 3 interfaces, e então iremos analisá-las uma por uma

① No geral, todos eles são solicitações get e os parâmetros comuns são service, callback e _. Existem outros parâmetros no Artigo 2 e no Artigo 3.

② Os dois campos sob os dados nos dados retornados pela primeira interface são os parâmetros da segunda interface

③ Um determinado campo nos dados retornados pela segunda interface é um parâmetro da terceira interface

Escreva uma estrutura aproximada com base no acima

#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. Então é normal escrever o pedido get

Visto que o valor de retorno aqui não está no formato json, não há necessidade de escrever json.loads () como este, imprima-o primeiro para visualizar

3. Como mencionado acima, lt e execução aqui são os parâmetros da próxima interface, portanto, seus valores precisam ser extraídos neste momento

Isso envolve extração regular

ps: Recomendar um site de depuração http://tools.jb51.net/regex/javascript

Endereço de aprendizado de expressão regular Python: https://www.jb51.net/article/177521.htm

Também é simples escrever aqui em python, consulte os comentários no script abaixo para obter detalhes

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. Escreva a segunda interface e traga as coisas retornadas pela primeira interface

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

Um erro 302 foi encontrado durante a execução

Erro 302: redirecionamento, representando uma transferência temporária; significa que você visitou a URL a, mas por causa do interceptor no lado do servidor ou outro processamento de código, você será redirecionado para a URL b.

Ao usar solicitações para simular o login, o uso direto de request.get (url) pode facilmente causar o redirecionamento 302. O motivo é que os cookies não são persistentes (as solicitações vêm com o processamento de cookies, mas não são persistentes)

Então, aqui precisamos armazenar o cookie e usá-lo

Consulte o caminho para o uso específico de cookies: https://www.cnblogs.com/liuzhzhao/p/12114453.html

5. Saiba como usá-lo, então vamos modificar o código

O script a seguir é como uma abóbora, as informações do cookie da primeira interface são salvas para a segunda interface e o cookie da segunda interface é salvo para a terceira.

Está concluído como um todo e precisa ser complementado separadamente mais tarde.
Os principais pontos de conhecimento dessa época: chamada de dependência de interface, armazenamento e uso de cookies, extração regular de informações de chave de python


Finalmente: benefícios do testador

Na indústria de tecnologia, você deve aprimorar suas habilidades técnicas e enriquecer sua experiência prática em projetos de automação, o que será muito útil para o planejamento de sua carreira nos próximos anos e para a profundidade de sua tecnologia de testes.

Na temporada de entrevistas do Golden 9th e Silver 10th, a temporada de empregos, organizar perguntas para entrevistas se tornou meu hábito por muitos anos! A seguir está minha coleção e classificação nos últimos anos, o todo é organizado em torno de [teste de software], o conteúdo principal inclui: vídeo exclusivo de teste de automação python, detalhes de automação Python, um conjunto completo de perguntas de entrevista e outros conteúdos de conhecimento.

Não tenha vergonha de receber um salário de 8 mil, não seja complacente só porque ganha um salário de mais de 20 mil, não seja complacente só porque ganha 30-45. A vida não é ganhar aquele saláriozinho, o que você precisa é abrir uma carreira.

Que você e eu nos encontremos e você encontrará algo! Bem-vindo a seguir a conta pública do WeChat: [Artigo Sad Spicy] Receba gratuitamente um livro de entrevistas com o engenheiro de teste de software de 216 páginas. E os tutoriais de aprendizagem em vídeo correspondentes são gratuitos para compartilhar!

Boa recomendação de artigo:

Ali está no segundo lado, descobri que meu entendimento sobre testes automatizados é muito superficial

Construção de ambiente de automação Appium

Depois de ler o artigo de Daniel, não terei medo da resposta lenta do servidor.

Acho que você gosta

Origin blog.csdn.net/weixin_50829653/article/details/112967813
Recomendado
Clasificación