Explicação detalhada do teste de API usando Pytest na prática de automação Python

9cbc19c2690b4d83b49f5f78cb26ebdd.jpg


 

visão geral

 

Toda vez que a API é testada manualmente, os mesmos dados precisam ser inseridos repetidamente e vários casos de teste precisam ser executados, o que é muito tedioso e chato. Então, existe uma maneira de testar sua API com mais eficiência? Pytest teste automatizado! Hoje, o editor apresentará a você como usar o Pytest para testes automatizados de API.


 

O que é teste de API?

O teste de API é um método de teste de software usado para testar interfaces de programação de aplicativos (APIs) para garantir sua funcionalidade, confiabilidade, desempenho e segurança. Ao contrário de outros tipos de teste de software, o teste de API se concentra principalmente na funcionalidade e no desempenho da API, e não na funcionalidade e no desempenho de todo o aplicativo. O teste de API pode ajudar desenvolvedores e testadores a testar APIs com rapidez e precisão, melhorando assim a eficiência do desenvolvimento e a qualidade do software.

estrutura Pytest

Pytest é uma estrutura de teste Python popular para escrever e executar testes. O Pytest tem uma sintaxe simples e fácil de usar que facilita a escrita de vários tipos de testes, incluindo testes de unidade, testes de integração e testes de API. O Pytest também fornece muitos recursos úteis, como descoberta automática de testes, repetição de teste, filtragem de teste e relatório de teste.

Teste de API com Pytest

Abaixo, mostrarei como usar a estrutura Pytest para teste de API. Vou usar o exemplo de teste de uma API simples que pega dois números e retorna a soma deles. Vamos escrever um caso de teste para testar a API.

Primeiro, precisamos instalar o framework Pytest. Digite o seguinte comando no terminal para instalar o Pytest:

pip install pytest

Precisamos escrever um caso de teste. Neste caso de teste, usaremos a biblioteca de solicitações do Python para enviar solicitações à API e usar asserções para verificar se a resposta da API está correta. Aqui está o código-fonte do caso de teste:

import requests

def test_addition():
    url = "http://localhost:5000/add"
    data = {"num1": 2, "num2": 3}
    response = requests.post(url, data=data)
    assert response.status_code == 200
    assert response.json() == {"result": 5}

No código acima, primeiro definimos uma função de teste chamada test_addition. A função envia uma solicitação POST para a API usando a biblioteca de solicitações e recebe dois números como dados de entrada. Em seguida, usamos duas asserções para verificar se a resposta da API está correta. A primeira asserção verifica se o código de status da resposta é 200, enquanto a segunda asserção verifica se os dados JSON da resposta são {"resultado": 5}.

Agora, podemos usar o Pytest para executar este caso de teste. Execute o teste digitando o seguinte comando em um terminal:

pytest test_api.py

Se tudo estiver bem, o Pytest exibirá os resultados do teste e informará se o teste passou ou não. Se um teste falhar, o Pytest exibirá o caso de teste com falha e uma mensagem de erro.

uso avançado

1. Teste paramétrico

Ao testar, geralmente precisamos testar diferentes dados de entrada. Se usarmos métodos de teste tradicionais, precisamos escrever vários casos de teste. Mas usando a função de teste parametrizada do pytest, podemos gerar automaticamente vários casos de teste por meio de alguns parâmetros. Isso pode reduzir muito nosso volume de código e melhorar a eficiência do teste.

Abaixo está um exemplo em que usamos testes parametrizados para testar vários conjuntos de entradas e saídas para uma função de calculadora.

import pytest

@pytest.mark.parametrize("a,b,expected", [
    (1, 2, 3),
    (2, 3, 5),
    (3, 4, 7),
])
def test_add(a, b, expected):
    assert a + b == expected

Neste exemplo, usamos o decorador pytest.mark.parametrize para especificar parâmetros para um teste parametrizado. Em uma lista parametrizada, cada conjunto de parâmetros é uma tupla, que contém os parâmetros da função e o valor de saída esperado. O pytest combinará automaticamente esses parâmetros em vários casos de teste e os executará sequencialmente.

2. Uso de acessórios

Ao testar, geralmente precisamos criar alguns dados de teste ou ambiente de teste, então podemos usar a função Fixture do pytest. Fixture é uma função que pode fornecer dados de teste ou ambiente de teste, e podemos usá-lo por meio de decoradores em casos de teste.

O seguinte é um exemplo, usamos o Fixture para criar um ambiente de teste e, em seguida, testar.

import pytest

@pytest.fixture
def setup_environment():
    # 创建测试环境
    env = {'name': 'test'}
    yield env
    # 清理测试环境
    del env

def test_env(setup_environment):
    assert setup_environment['name'] == 'test'

Neste exemplo, usamos o decorador @pytest.fixture para definir a função setup_environment como uma luminária. Nesta função podemos criar o ambiente de teste e retorná-lo na instrução yield. No caso de teste, podemos usar o Fixture através do nome do parâmetro e o pytest passará automaticamente o valor de retorno do Fixture para o caso de teste.

3. Plug-ins personalizados

O pytest possui muitos plug-ins integrados que podem nos ajudar a concluir algumas tarefas comuns de teste. Mas, no uso real, geralmente precisamos de mais funções. Neste momento, podemos usar o mecanismo de plug-in do pytest para personalizar o plug-in para atender às nossas necessidades.

O seguinte é um exemplo, usamos o mecanismo de plug-in do pytest para personalizar um plug-in para gerar algumas informações antes que o caso de teste seja executado.

import pytest

@pytest.hookimpl(tryfirst=True)
def pytest_runtest_logstart(nodeid):
    print(f"Running test {nodeid}...")

def test_example():
    assert 1 + 1 == 2

Neste exemplo, usamos o decorador @pytest.hookimpl para definir a função pytest_runtest_logstart como um plug-in. Nesta função, geramos o ID do caso de teste. Antes que o caso de teste seja executado, o pytest chamará automaticamente esse plug-in e as informações de saída.

 

Resumo técnico

Este artigo apresenta o conceito de teste de API e detalha como usar a estrutura Pytest para teste de API. Espero que este artigo possa ajudá-lo a entender melhor o teste de API e como usar o teste automatizado do Python para melhorar a eficiência do teste e a qualidade do software. Ao mesmo tempo, espero que você aprenda a escrever e executar casos de teste de API por meio deste exemplo e de uma breve introdução ao framework Pytest.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Acho que você gosta

Origin blog.csdn.net/Rocky006/article/details/132131132
Recomendado
Clasificación