Синтаксис утверждения Pytest и как вызвать файл yml из функции pytest - PullRequest
0 голосов
/ 01 октября 2018

Вот как я кодирую свой юнит-тест:

def test_valid_number():
  check = requests.get("http://testing/validateNumber/021844223")
  assert True

def test_invalid_number():
  check = requests.get("http://testing/validateNumber/02188441")
  assert False 

Мои вопросы:

  1. Как правильно выполнить утверждение (с pytest) для проверки APIответ?Первая функция - проверка действительного числа и возвращает результат:

    {"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE",..... }
    

Вторая функция - проверка недействительного числа с ожидаемым возвращением:

    {"header":[],"headercount":0,"offers":[]}
Вместо кодирования URL-адреса и номера студента вручную.Как я могу создать это в YAML и как вызвать файл YAML в обеих моих функциях.

1 Ответ

0 голосов
/ 01 октября 2018

Pytest предоставляет прибор monkeypatch, и вы можете использовать его

def test_valid_number(monkeypatch):
    def patched_get():
        return {"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE"}
    monkeypatch.setattr(requests, 'get', patched_get)
    assert check == {"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE"}

Для чтения файлов YAML вам необходимо PyYAML .Установите его с pip.

import yaml

with open("example.yml", "r") as f:
    test_data = yaml.load(f)

def test_valid_number():
    response = requests.get(test_data['url']).json()
    assert response == test_data['expected']

И файл YAML будет выглядеть так:

url: "http://testing/validateNumber/021844223"
expected:
  header:
    -
      STUDENTNUM: "P56219"
      STUDENTNAME: "GOLDIE"
      ......
...