"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como simular solicitações e respostas HTTP em cenários de teste Python?

Como simular solicitações e respostas HTTP em cenários de teste Python?

Publicado em 2024-11-02
Navegar:608

How to Mock HTTP Requests and Responses in Python Testing Scenarios?

Mocking de solicitações e respostas para testes Python

Nos testes Python, torna-se necessário simular módulos e suas funcionalidades para controlar o fluxo de execução e verificar cenários específicos. Entre eles, zombar do módulo de solicitações é comumente usado para testar funções ou métodos que dependem de solicitações HTTP.

Considere um arquivo views.py com o seguinte código:

def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')

Para simular esse comportamento, você pode empregar o pacote simulado Python. Veja como você pode fazer isso passo a passo:

Etapa 1: Defina o comportamento simulado

Para simular o módulo de solicitações, defina uma função que substituirá requests.get (). Nesta função, você pode especificar a resposta desejada para cada URL.

def mocked_requests_get(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code):
            self.json_data = json_data
            self.status_code = status_code

        def json(self):
            return self.json_data

    if args[0] == 'aurl':
        return MockResponse({'a': 'a'}, 200)
    elif args[0] == 'burl':
        return MockResponse({'b': 'b'}, 200)
    elif args[0] == 'curl':
        return MockResponse({'c': 'c'}, 200)

    return MockResponse(None, 404)

Etapa 2: corrigir o módulo de solicitações

Em seu caso de teste, use o decorador mock.patch() para substituir as solicitações reais módulo com sua função simulada.

@mock.patch('requests.get', side_effect=mocked_requests_get)
def test_myview(self, mock_get):
    # Call the function you want to test
    myview(None)
    # Assertions for expected responses
    ...

Etapa 3: verificar asserções

Na sua função de teste, você pode usar asserções para verificar se as respostas esperadas são retornadas.

self.assertEqual(mock_get.call_args_list[0][0][0], 'aurl')
self.assertEqual(mock_get.call_args_list[1][0][0], 'burl')
self.assertEqual(mock_get.call_args_list[2][0][0], 'curl')

Seguindo essas etapas, você pode simular solicitações HTTP com eficácia e controlar as respostas em seus cenários de teste Python. Isso permite isolar e testar funcionalidades específicas, garantindo que dependências externas não interfiram em seus resultados.

Declaração de lançamento Este artigo foi reimpresso em: 1729424478 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3