Conteúdo: Guia
-
- prefácio
- 1. Da entrada ao domínio da programação Python
- 2. Combate real do projeto de automação da interface
- 3. Combate Real do Projeto de Automação Web
- 4. Combate real do projeto de automação de aplicativos
- 5. Currículo de fabricantes de primeira linha
- 6. Testar e desenvolver o sistema DevOps
- 7. Ferramentas de teste automatizadas comumente usadas
- Oito, teste de desempenho do JMeter
- 9. Resumo (pequena surpresa no final)
prefácio
Dois métodos comuns de processamento de dependência de interface
1. Os campos do corpo da solicitação dependem
dessa situação. A maioria dos casos está na interface atualmente testada, e os campos no corpo da solicitação de sua pré-interface devem ser usados no corpo da solicitação da interface atual para continuar a usar.
Por exemplo, a interface para modificação das informações do usuário utilizará o campo nome do usuário, que é passado no corpo da requisição ao criar o usuário. Parametrizamos o corpo da requisição da interface para criação do usuário para que ela possa gerar dinamicamente o nome do usuário .
Porque muda toda vez, quando a interface para modificar as informações do usuário é executada, se ainda usarmos a parametrização da interface anterior, inevitavelmente fará com que os nomes de usuário das duas sejam diferentes, o que fará com que a interface não execute , então Para executar o processamento de dependência de interface neste tipo de interface
Tratamos as dependências da interface diretamente no código da classe de teste:
if case["check_info"] == 'user_info':
user_name = json.loads(new_data)['name']
case_logger.info("{:-^50s}".format(f"user_name:{
user_name}"))
setattr(do_re, 'user_name', user_name)
2. Dependência do campo do corpo da resposta
O método de usar o campo do corpo da resposta na próxima interface ainda é muito comum na dependência da interface. Freqüentemente, a interface anterior é uma interface de consulta do tipo get e a obtemos do corpo da resposta da interface Take o campo correspondente e utilizá-lo no corpo da requisição da próxima interface.
Tratamos as dependências da interface diretamente no código da classe de teste:
if case["check_info"] == 'get_op_svc_servicestage_domainId':
op_svc_servicestage_domainId = res.json()['user']['domain']['id']
case_logger.info("{:-^50s}".format(f"op_svc_servicestage_domainId:{
op_svc_servicestage_domainId}"))
setattr(do_re, 'op_svc_servicestage_domainId', op_svc_servicestage_domainId)
Lidar com a interface do tipo que precisa fazer upload de arquivos
1. Análise da interface
Aqui, faça o upload direto no front-end, capture o pacote através da ferramenta de desenvolvimento F12 do navegador Chrome, e você poderá ver a solicitação e as informações correspondentes da interface do arquivo de upload, porque é a interface do projeto da empresa, é fará algum processamento de mosaico:
Observe os parâmetros da solicitação novamente:
Podemos ver na solicitação que o método de solicitação é um formato de formulário multipart/form-data e observe que, embora o arquivo seja carregado, o caminho e o nome do arquivo não são exibidos nos parâmetros da solicitação e o valor fileList é "binário" , então você pode saber o conteúdo de bytes do arquivo carregado
2. Exemplo do carteiro
Pegue o carteiro como exemplo, selecione a opção form-data para o corpo, preencha fileList[] para a chave e selecione o formato como arquivo, selecione um arquivo local em valor para carregar e, em seguida, inicie uma solicitação:
3. Exemplo de solicitação
Acabamos de realizar a solicitação de upload de arquivos com a ajuda de ferramentas, e o carteiro pode converter nossa solicitação em formato de código python.
As etapas específicas são as seguintes:
primeiro use o carteiro para criar os parâmetros e depurar com sucesso;
clique no código abaixo do botão Salvar;
Copie o código após selecionar a linguagem como Python - Requests
Cole o código copiado na ferramenta de desenvolvimento do código Pycharm ou VS e execute-o
import os
import requests
from Commons.constants import UPLOAD_DIR
url = "https://接口地址/1.0/product/style-gallery"
payload = {
}
files = [
('fileList[]', open(os.path.join(UPLOAD_DIR, 'stylegallery.png'), 'rb'))
]
headers = {
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text.encode('utf8'))
Até agora, o processamento da interface de upload de arquivo foi concluído e testes subsequentes ou automação de interface podem ser executados com base nisso para desenvolvimento secundário.
4. Solução 2
Se o método acima não resolver o problema, use o segundo método, basicamente não haverá problema.
Vamos dar uma olhada no conteúdo da solicitação para upload de arquivos:
Em seguida, aplique o seguinte modelo ao valor dos arquivos de parâmetros de solicitação da biblioteca de solicitações:
files = {
'${name}': ('${filename}', open( '${filepath}', 'rb'), '${Content-Type}')
}
${name}: o valor do nome "fileList[0]"
${filename}: o valor do nome do arquivo "a.jpg"
${filepath}: o caminho do arquivo do nome do arquivo
${Content-Type}: o tipo de conteúdo O valor "image/jpeg"
substitui a variável correspondente ao template pelo valor real, resultando em:
files = {
'fileList[0]': ('a.jpg', open(os.path.join(UPLOAD_DIR, 'a.jpg'), 'rb'), 'image/jpeg')
}
Observação: Para confirmar se o caminho do arquivo está correto, utilizo aqui um caminho relativo e, em seguida, passo os arquivos para o método de solicitações correspondente.
A seguir está o diagrama de sistema de arquitetura de conhecimento de aprendizado de engenheiro de teste de software mais completo em 2023 que eu compilei |
1. Da entrada ao domínio da programação Python
2. Combate real do projeto de automação da interface
3. Combate Real do Projeto de Automação Web
4. Combate real do projeto de automação de aplicativos
5. Currículo de fabricantes de primeira linha
6. Testar e desenvolver o sistema DevOps
7. Ferramentas de teste automatizadas comumente usadas
Oito, teste de desempenho do JMeter
9. Resumo (pequena surpresa no final)
Como você pode ver um arco-íris sem experimentar o vento e a chuva; como você pode se tornar um mestre sem se controlar. Aderir ao sonho, buscar a excelência, e o ritmo da luta nunca vai parar. Antes de cada amanhecer, há glória esperando.
A luta é como uma pedra de amolar, afiando o fio; o trabalho árduo é como a luz do sol, iluminando o caminho a seguir. Sem medo de desafios e buscando a excelência, somente nos esforçando persistentemente podemos nos superar, florescer o brilho da vida e deixar os sonhos brilharem sem fim na jornada de luta!
Na jornada da luta, não tenha medo do fracasso, pois cada queda é uma oportunidade de se levantar mais forte; não busque a perfeição, pois o crescimento se acumula através de repetidas tentativas. Contanto que você tenha coragem e persistência, você seguirá firme em direção ao seu sonho.