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

rest
python
job
unittest
api
Теги: #<Tag:0x00007fedbb859cc8> #<Tag:0x00007fedbb859b10> #<Tag:0x00007fedbb8597f0> #<Tag:0x00007fedbb8595c0> #<Tag:0x00007fedbb859390>

(Sergiy Panchenko) #1

Добрый день!
Есть вот такое задание. Я в этом полный ноль, разве что 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/, shows a
candidate with 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/, deletes a
candidate with id=. Returns 200


Какие задачи по программированию на собеседовании на автоматизатора Вам задавали?
(rmerkushin) #2

На вскидку: http://habrahabr.ru/post/38730/ и http://docs.python-requests.org/en/latest/


(Mykhailo Poliarush) #3

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

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


(Sergiy Panchenko) #4

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


(Mykhailo Poliarush) #5

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


(ex3me0) #6

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


(ex3me0) #7

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


(Mykhailo Poliarush) #8

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

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


(ex3me0) #9

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

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


(Mykhailo Poliarush) #10

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


(Lyudmila Barabash) #11

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

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

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

Cogniance Recruiting Team


(Mykhailo Poliarush) #12

@Lyudmila_Barabash а я все ждал когда к нам все таки присоединится Cogniance Recruiting Team так как решение не может долго оставаться незамеченным. А расскажите, что у вас за проект по автоматизации, что к вам все хотят так попасть smile Я также подготавливаю питонистов http://lessons2.ru/python-for-testers/ могу к вам направлять людей если хотите.


(ex3me0) #13

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


(Lyudmila Barabash) #14

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