Запросы Python как автоматический тест в конвейере Jenkins - PullRequest
1 голос
/ 06 ноября 2019

Я относительно неопытен в области Python. Я работаю с Python Requets и BeautifulSoup. Все сценарии, которые я пишу, являются исполняемыми.

Поскольку я ничего не знаю о Pytest и Unittest, я пытался получить эти знания, но я просто не могу получить дальше.

В частности, я видел, что Python Requests работает над Mocks, но я должен сказать, что я не уверен, что это правильный способ писать тесты и включать их в конвейер Jenkins. Цель состоит в том, чтобы протестировать различные http-запросы веб-сайта, либо в виде модульного теста, либо через Pytest.

Каково ваше мнение?

Возможно ли это с запросами (интеграцией) Python через макеты?

Нужно ли использовать Pytest или Unittesting?

import requests 
from requests.exceptions import HTTPError
import pytest 
from bs4 import BeautifulSoup
import postpython

page = requests.get('http://google.de')
soup = BeautifulSoup(page.content, 'html.parser')
print(soup)

1 Ответ

1 голос
/ 06 ноября 2019

Взято из здесь :

У вас есть два типа тестов:

  1. Интеграция - Проверка интеграционного тестачто компоненты в вашем приложении работают друг с другом, т.е. как единое целое, без всяких насмешек.
  2. Unit - модульный тест проверяет небольшой компонент в вашем приложении изолированно, то есть проверяет все зависимости для этого.

Предположим, у вас есть приложениекод, который делает запрос к API.

Вы должны использовать unit test , чтобы проверить, вызывается ли в вашем коде приложения запрос к API или нет (без фактического выполнения запроса API). Вы бы смоделировали поведение отправки запроса и создали поддельный ответ в своем модульном тесте. Это сделано для того, чтобы вы могли протестировать свой код в изоляции запроса / ответа API.

Но если вы действительно хотите вызвать API и получить реальный ответ, то вы быиспользуйте интеграционные тесты . Это позволяет вам тестировать поведение приложения в целом.

В python unittest и pytest - две из многих доступных библиотек для запуска тестов, для написания и управления такими тестами .

Если вы хотите смоделировать запросы / ответ, проверьте это: Как я могу смоделировать запросы и ответ?

Насколько я понимаю, вы ищетена самом деле сделать запрос в вашем конвейере Jenkins CI / CD на сервер и посмотреть, получите ли вы успешный ответ. Это относится к категории интеграционных тестов, поэтому вам не нужно что-либо издеваться.

Вы можете проводить интеграционные тесты как с unittest, так и с pytest.

Вот пример с pytest:

import pytest

def test_get_request():
    response = requests.get('http://google.de')
    assert response.status_code == 200

Чтобы запустить это, вы можете запустить задачу командной строки в своем конвейере jenkins:

pytest your_test_file.py

Вы можете следоватьэто руководство для получения дополнительной информации и введения в PyTest здесь .

...