Rest API
Всем привет. Неделю назад я написал небольшой пример того как я попробовал автоматизировать на #mobile:appium + #programming:python . Сегодня я хотел показать и посоветоваться по поводу автоматизации #REST #API.
Почему посоветоваться? - Потому что иногда взгляд со стороны может помочь или улучшить.
Почему REST API ?
Сама по себе автоматизация API ,по моему опыту, очень простая. И если есть желание начать автоматизировать, то проще всего попробовать с API.
На python я использую библиотеку requests. Сама структура , как мне кажется - похожа на PageObject.
У нас на проекте микросервисная архитектура, каждый микросервис описывает два класса. Высокоуровневый и низкоуровневый.
Немного примеров.
Все куски кода покажу на примере небольшого тестового, которое я делал несколько месяцев назад. В описании используется REST API для github
Низкоуровневый подразумевает что на вход для каждого метода по работе с API приходит DTO, в котором есть набор необходимых параметров для запроса.
def get_all_pull_requests(self, dto):
"""
:param dto:
:return:
https://developer.github.com/v3/pulls/#list-pull-requests
"""
return requests.get(url=self.session + '/repos/{owner}/{repo}/pulls'.format(
owner=dto['owner'],
repo=dto['repo']),
headers=self.header)
Высокоуровневый - в нем происходит генерация этого dto и передача его низкоуровневый + обрабляется сам ответ запроса. Происходит валидация status code и тд.
def get_all_pull_requests(self):
request = self.pull_request.get_all_pull_requests(self.all_pull_request_dto())
if request.status_code != 200:
raise ExpectedStatusCodeError
return request.json()
Структура
Вот ссылка на проект.
Так организована структура проекта.
В API - описаные все сервисы (микросервисы).
В config - лежат все данные в .yaml
файле и методы по работе с ними. Знаю что можно создать еще директорию helpers - куда все это поместить. Но, повторюсь - тут максимальноу упрощенный вариант. Добавлю что тесты прикручены к Travic-Ci, для этого был дополнительно создан .travic.yaml
файл.
language: python
python:
- "2.7"
# command to install dependencies
install: "pip install -r requirements.txt"
# command to run tests
script:
- py.test -v py_tests/
- behave bdd_tests/
И как бонус в самом hithub
репозитории я могу видеть что тесты прошли, при работе с #mobile:appium или даже с #webdriver -так просто настроить тесты не получится.
Такую строчку добавить в
README.md
### Status
[![Build Status](https://travis-ci.org/keyprqa/GitHubAPI.svg?branch=master)](https://travis-ci.org/keyprqa/GitHubAPI)
Выводы
Если хочеться начать автоматизировать - API это самый быстрый путь, в нем есть своя специфика. И это не мение интересно (для меня) чем UI автоматизация или мобайл. Как Вы описываете REST API автоматизацию?
- Нравится писать тесты под API
- Люблю старый, добрый Selenium
- 50/50 от настроения
0 участников