Тестирование Rest API c помощью python средств

Добрый день!
Есть вот такое задание. Я в этом полный ноль, разве что Python немного знаю.
Подскажите, пожалуйста, что можно почитать об этом на доступном языке.

Python:
Using API documentation below verify that all endpoints (methods) on server**
work as expected (accessible and return correct response codes for all cases).
Output should be:

  1. Code that verifies that data is added to server.
  2. Code that verifies correctness of returned response codes.

Small tips.
● POST request accepts name and position in body;
● Body is expected to be in JSON format;
● All requests with body should contain correct “Content-Type” header;
● Not all methods might work as expected;
● In this section you do not need to parse response, only to verify that

“some” data was uploaded to server.

**Please note that your are not the only person using this server, thus you might notice that
there will be some data which you did not create, as well as your data might be occasionally
deleted by other users.

NICE TO HAVE:

Python:
For the Python task mentioned above:

  1. Verify that all methods working as expected.
  2. All data is correctly added to server.

Small tips:
● Try to create positive and negative verifications;
● In this section you do need to parse response received from server.
This document contains confidential and proprietary information and may not be reproduced or distributed in
any manner without the express consent of Cogniance Inc. ©2014 Cogniance Inc, a Delaware, United States
corporation. All rights reserved.

Datamining:
Use existing access log (any language) to receive next information:

  1. Count # of successful requests per hour.
  2. Results should be stored in file.

Small tips:
● Log contains data only for 1 day;
● Successful request should have response code 200;
● Easiest way to achieve that - *unix command line.

OUT OF THE BOX:

Python & Redis:
For “OUT OF THE BOX” level make several enhancements to Python tasks from
the “OK LEVEL” and “NICE TO HAVE”. Create a DB using Redis in which candidate

names and positions will be stored. In order to accomplish this task:

  1. Redis should be installed on local machine.
  2. All requests to server that require passing names and positions within your
    test should take that data from Redis.
  3. All comparisons that touch verification of the names and positions you have
    in test should be done using data from Redis.

Datamining:
Use existing access log (any language) to receive next information:

  1. Count % of successful requests per hour.
  2. Results should be stored in file.

Small tips:
● Log contains data only per 1 day;
● Successful request should have response code 200;
● Easiest way to achieve that - *unix command line.

API DOCUMENTATION:

Server allowed methods:
GET, http://qainterview.cogniance.com/candidates, gives a list of all candidates.
Returns 200.
GET, http://qainterview.cogniance.com/candidates/<cand_id>, shows a
candidate with id=<cand_id>. Returns 200
POST, http://qainterview.cogniance.com/candidates, adds a new candidate.
Returns 201. Case when header Content-Type: application/json or name is
absent, 400 is returned.
DELETE, http://qainterview.cogniance.com/candidates/<cand_id>, deletes a
candidate with id=<cand_id>. Returns 200

На вскидку: Архитектура REST / Habr и Requests: HTTP for Humans™ — Requests 2.30.0 documentation

2 лайка

Походу все так хотят попасть с congniance что Вы уже не первый который просит помощи в решении подобной задачи. Собственно, так как я уже помогал другим решать подобную задачу, то поделюсь своим решением и с вами. Мне не жалко.

Используем python 2.7 + unittest + requests + json

2 лайка

Ваше решение, Михаил, скопипастил, но буду сначала читать и разбираться сам.
Спасибо за ответы.

Да без проблем, изучайте и разбирайтесь. Удачи!

1 лайк

Я бы сбрил такого кандидата, как минимум за то, что он не юзает встроенный response.json :stuck_out_tongue_closed_eyes:

Поделитесь, что за вакансия хоть?

Ну брей сколько угодно :slight_smile: ! Дело в понимании принципов, а не в какой-то функции, о которой можно забыть или не знать. Но ты прав, я подправлю код, чтобы код был идеальным :smile:

Вакансию не знаю, но видимо популярная если о ней уже знают больше чем два человека :smile:

А я бы, напротив, не стал этого делать =)

Вторым постом пытался ответить на сообщение ТС.
Видимо не совсем разобрался со структурой форума) Все больше привык к олдскульному виду булки или ксено

Ну пора привыкать!

Уважаемый pserzh, к сожалению, 2-го собеседования уже не будет.
Вы разгласили конфиденциальную информацию, несмотря на нашу письменную просьбу не делать этого.

Мы обновим задание, а в вашем же профайле в базе кандидатов оставляем негативный референс и в будущем будем вынуждены им делиться при запросах от коллег.

Надеемся, что для остальных любителей использовать “списывание” это возможно будет уроком, есть примеры влияния однажды подмоченной репутации на старте карьеры в течении последующих 10 лет, которые более чем незаметно пролетают, вы уж поверьте и задумайтесь.

Cogniance Recruiting Team

@Lyudmila_Barabash а я все ждал когда к нам все таки присоединится Cogniance Recruiting Team так как решение не может долго оставаться незамеченным. А расскажите, что у вас за проект по автоматизации, что к вам все хотят так попасть :smile: Я также подготавливаю питонистов Поиск 🔍 организации или лица - Предоставление сведений из ЕГРЮЛ/ЕГРИП в электронном виде могу к вам направлять людей если хотите.

Присоединяюсь к Михаилу. Дайте подробностей.

Меня легко найти на https://www.linkedin.com/. Смогу ответить на все вопросы.