Convertendo Testes de API do Talend para Coleções do Postman

Você já precisou migrar testes de API do Talend para o Postman e enfrentou desafios com a estrutura dos dados? Compartilho um script Python simples que pode facilitar essa tarefa!

O que é Talend API Tester e Postman?

  • Talend API Tester: Uma ferramenta usada para testar APIs, permitindo especificar requisições HTTP com parâmetros, cabeçalhos e corpo da requisição.
  • Postman: Uma plataforma de colaboração para desenvolvimento de APIs, permitindo testar, documentar e compartilhar APIs com facilidade.

Problema e Solução

Ao exportar testes de API do Talend para JSON, a estrutura dos dados pode variar, resultando em erros ao tentar importar para o Postman. Um dos problemas comuns é lidar com requisições que não possuem parâmetros de query definidos.

Solução: Script Python de Conversão

Desenvolvi um script Python que converte o JSON exportado pelo Talend API Tester em um formato compatível com o Postman. Aqui estão os passos principais:

  1. Exportando da API do Talend:
    • No Talend API Tester, exporte cada projeto individualmente como JSON.
    • Dentro do projeto, navegue até a seção de exportação e escolha o formato JSON.
  2. Leitura do JSON: O script lê o arquivo JSON exportado do Talend API Tester usando a biblioteca json.
  3. Conversão para Postman: Itera sobre as requisições no JSON, extrai informações como método HTTP, URL, parâmetros de query, cabeçalhos e corpo da requisição.
  4. Tratamento de Erros: Implementa tratamento para casos onde requisições podem não ter parâmetros de query definidos, prevenindo erros como KeyError.
  5. Saída para JSON do Postman: Gera um novo arquivo JSON no formato do Postman contendo todas as requisições convertidas.

Como Usar

  1. Preparação:
    • Exporte seus testes de API do Talend para JSON, projeto por projeto.
    • Certifique-se de ter o Python instalado em seu ambiente de desenvolvimento.
  2. Edite o Script:
    • Baixe o script Python fornecido e edite-o para definir os caminhos dos arquivos de entrada (export_talend_project.json) e de saída (import_postman_collection.json).
  3. Execução do Script:
    • Execute o script usando python talend_to_postman.py.
    • O script irá converter os dados e salvar a coleção do Postman no arquivo especificado.
  4. Importação no Postman:
    • Abra o Postman e importe o arquivo JSON gerado (import_postman_collection.json).
    • Agora você tem todas as requisições prontas para testar e documentar diretamente no Postman!

Script

import json

def api_tester_to_postman(api_tester_json):
    postman_collection = {
        "info": {
            "name": api_tester_json['entities'][0]['entity']['name'],
            "description": api_tester_json['entities'][0]['entity']['description'],
            "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
        },
        "item": []
    }

    for request in api_tester_json['entities'][0]['children']:
        req_entity = request['entity']
        method = req_entity['method']['name']
        url = f"{req_entity['uri']['scheme']['name']}://{req_entity['uri']['host']}{req_entity['uri']['path']}"
        
        # Check if 'query' key exists in 'uri' dictionary
        if 'query' in req_entity['uri']:
            query_params = req_entity['uri']['query'].get('items', [])
        else:
            query_params = []
        
        headers = req_entity['headers']

        postman_request = {
            "name": req_entity['name'],
            "request": {
                "method": method,
                "header": [{"key": h['name'], "value": h['value'], "disabled": not h.get('enabled', True)} for h in headers],
                "url": {
                    "raw": url,
                    "protocol": req_entity['uri']['scheme']['name'],
                    "host": req_entity['uri']['host'].split('.'),
                    "path": req_entity['uri']['path'].split('/')[1:],  # Remove the leading slash
                    "query": [{"key": p['name'], "value": p['value'], "disabled": not p.get('enabled', True)} for p in query_params]
                },
                "body": {
                    "mode": "raw",
                    "raw": req_entity['body'].get('textBody', '')
                }
            }
        }

        postman_collection['item'].append(postman_request)

    return postman_collection

# Carregar o JSON exportado do API Tester
with open('export_talend_project.json', 'r') as file:
    api_tester_json = json.load(file)

# Converter para o formato do Postman
postman_collection = api_tester_to_postman(api_tester_json)

# Salvar a coleção do Postman em um arquivo
with open('import_postman_collection.json', 'w') as file:
    json.dump(postman_collection, file, indent=4)

print("Conversão concluída. O arquivo gruposh_postman_collection.json foi criado.")

Conclusão

Com este script, você pode automatizar a conversão de seus testes de API do Talend para o Postman, economizando tempo e evitando erros comuns de importação. Espero que isso facilite sua transição e melhore sua experiência de desenvolvimento de APIs!

Experimente e compartilhe suas experiências nos comentários.

Comentários