Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Assert в Python при тестировании API GitHub

api
python
Теги: #<Tag:0x00007f7b652a34c8> #<Tag:0x00007f7b652a31f8>

(Володимир Назаренко) #1

Добрый день!
Учусь тестировать API с помощью Python, для основы взял GitHub. Когда проверяю создан ли репозиторий Python ругается AssertionError, происходит так потому, что помимо созданного репозитория существуют и другие, а при распаковке json ответа и проверке имени через Assert, Python ругается именно на остальные имена. Как правильно проводить в таком случае проверку?

Мой код:

import requests

token = '----------------------------------------------------------' 
headers = {"Authorization": "token %s" % token}
basic_url = 'https://api.github.com'

def test_create_repo(self):        
        url = '%s/user/repos' % self.basic_url
        data = {"name": "BestQA", "description": "This is repository for MyOwnPortfolio"}
        requests.post(url, headers=self.headers, json=data)

        r = requests.get(url, headers=self.headers)
        j = r.json()

        for item in j:
            assert item['name'] == 'BestQA'

Ошибка:

        for item in j:
>           assert item['name'] == 'BestQA'
E           assert 'git' == 'BestQA'
E             - git
E             + BestQA

../../../Документы/1/test_git_api.py:30: AssertionError
F

#2

@Volodimir_Nazarenko
Вы проверяете что каждый репозиторий имеет ваше название.
а нужно что ваш репозеторий в списке репозиториев (один из) .

я бы вытянул список всех имен и проверил что ваш тоже там есть.

конечный тест был бы -

assert 'BestQA' in all_repo_names

P.S.
или просто в цикле добавить if который будет проверять что данный репозиторий это ваш.
и если дойдет до последнего и не было Вашего - тогда ```
Assert False.


(Володимир Назаренко) #3

Спасибо за совет!
Сделал вот так:

list_of_repo = [item['name'] for item in j]
assert 'BestQA' in list_of_repo

(rmerkushin) #4

Посмотрите в сторону pyhamcrest http://pyhamcrest.readthedocs.io/en/release-1.8/dictionary_matchers/