O objetivo dessa tarefa é criar um script em python que faça requisições para uma API fornecida pelo usuário, usando um payload definido pelo usuário ou lido de um arquivo CSV.
O script deve ser usado para um teste de carga e retornar o response de cada tentativa, com uma marcação de sucesso ou falha dependendo do status code da response.
## Requisitos
- Receber como argumentos a URL da API, o formato do payload, o nome do arquivo CSV (se houver), a quantidade de requisições e o tempo limite.
- Validar os argumentos e mostrar uma mensagem de erro se algum deles for inválido ou faltar.
- Deve:
- usar a biblioteca
requests
para fazer as requisições para a API. - usar a biblioteca
csv
para ler o arquivo CSV, se houver. - usar a biblioteca
time
para medir o tempo de cada requisição. - usar a biblioteca
json
para formatar o payload e o response, se forem JSON. - verificar o status code da response e marcar a requisição como sucesso ou falha.
- deve mostrar na tela o response de cada requisição, com a marcação de sucesso ou falha e o tempo gasto.
- deve mostrar na tela um resumo do teste, com o número total de requisições, o número de sucessos, o número de falhas, o tempo médio e o tempo máximo de cada requisição.
- usar a biblioteca
- Relatorio em texto ao final, com os resultados de cada requisição e o resumo final.
O objetivo dessa tarefa é criar as tabelas em sqlite para guardar os dados do teste de API realizado pelo script python. As tabelas devem armazenar as informações das requisições, das respostas, e do resumo do teste.
- Se conectar ao banco de dados sqlite usando a biblioteca
sqlite3
. - Criar as tabelas se elas não existirem no banco de dados.
- Inserir os dados nas tabelas após cada requisição e ao final do teste.
- As tabelas devem ter os seguintes nomes e colunas:
- Requisicoes: essa tabela deve armazenar os dados das requisições feitas pelo script. As colunas devem ser:
- id: um inteiro que identifica a requisição de forma única. Deve ser a chave primária da tabela.
- url: uma string que armazena a URL da API testada.
- payload: uma string que armazena o payload enviado na requisição. Pode ser nulo se não houver payload.
- formato: uma string que armazena o formato do payload. Pode ser nulo se não houver payload.
- tempo_limite: um inteiro que armazena o tempo limite em segundos da requisição.
- id_resumo: um inteiro que referencia o resumo correspondente na tabela Resumo. Deve ser uma chave estrangeira que referencia a coluna id da tabela Resumo.
- Respostas: essa tabela deve armazenar os dados das respostas recebidas pelo script. As colunas devem ser:
- id: um inteiro que identifica a resposta de forma única. Deve ser a chave primária da tabela.
- id_requisicao: um inteiro que referencia a requisição correspondente na tabela Requisicoes. Deve ser uma chave estrangeira que referencia a coluna id da tabela Requisicoes.
- status_code: um inteiro que armazena o código de status da resposta.
- response: uma string que armazena o conteúdo da resposta.
- resultado: uma string que armazena o resultado da requisição, se foi sucesso ou falha.
- tempo: um real que armazena o tempo em segundos da requisição.
- Resumo: essa tabela deve armazenar os dados do resumo do teste. As colunas devem ser:
- id: um inteiro que identifica o resumo de forma única. Deve ser a chave primária da tabela.
- data_inicio: uma string que armazena a data de início do teste no formato AAAA-MM-DD HH:MM:SS.
- data_termino: uma string que armazena a data de término do teste no formato AAAA-MM-DD HH:MM:SS.
- total: um inteiro que armazena o número total de requisições feitas no teste.
- sucessos: um inteiro que armazena o número de requisições que tiveram sucesso no teste.
- falhas: um inteiro que armazena o número de requisições que tiveram falha no teste.
- tempo_medio: um real que armazena o tempo médio em segundos das requisições no teste.
- tempo_maximo: um real que armazena o tempo máximo em segundos das requisições no teste.
- Requisicoes: essa tabela deve armazenar os dados das requisições feitas pelo script. As colunas devem ser: