Size: a a a

testing_in_python

2021 June 16

А

Алексей in testing_in_python
логичная система работы с апи - отдельно транспортный уровень (враппер на реквестс, самодельный клиент, whatever), отдельно модели запросов (инпут параметры запроса, ожидаемые аутпут параметры запроса), отдельно логические методы для комплексных операций (создать юзера Вася в базе, заполнить модель запроса логина полями Вася, 123456, админ, отправить запрос, получить заданные поля статус и ид, отдать вызвавшему тесту). Для простых тестов модели можно скипнуть и запихать ввиде диктов в логические методы
источник

А

Алексей in testing_in_python
причем комплексные методы желательно не смешивать, и операции типа создать в базе, отправить апи запрос - пихать в фикстуры. Тогда апи компоненты сводятся к очень простым функциям по заполнению переданными параметрами запроса и отдачи ответа, ну а дальше уже тест обрабатывает это все
источник

SG

Sergey Gerasimuk in testing_in_python
+++
источник

СС

Сказочный Сникерс... in testing_in_python
все верно. апи клиент только умеет отправлять запросы с теми данными, что ему передали. между клиентом и тестами - прослойка с действиями, как одиночными так и комплексными. сами тесты дергают прослойку. прослойка дергает клиент. генерация данных тоже отдельно, в билдерах и прочих подобных штуках
источник

СС

Сказочный Сникерс... in testing_in_python
вот тебе по сути и pageobject только по другому, никапсуляция и наследование
источник

А

Алексей in testing_in_python
и без page 😂
источник

СС

Сказочный Сникерс... in testing_in_python
именно, это просто ооп подход, не более
источник

SB

Sasha Brud in testing_in_python
если эндпоинты окружений я прописываю в gitlab-ci в variables, есть какой-то изящный способ при запуске  тестов пробрасывать в conftest конкретный эндпоинт?

вариант:

endpoint = os.getenv("ENV_URL")

@pytest.fixture(scope="session")
def set_env(endpoint):
   return endpoint


но не покидает чувство андер/оверинжениринга
источник

AB

Anatoly Bobunov in testing_in_python
def pytest_addoption(parser):
   parser.addoption("--rest-url", action="store", default="None", help="Path to the rest")

def pytest_configure(config):
   os.environ["rest-url"] = config.getoption("--rest-url")
источник

A

Alexander in testing_in_python
import json
import allure
from allure_commons.types import AttachmentType

   allure.attach(body=json.dumps(to_file, default=str, ensure_ascii=False).encode("UTF-8"),
                 name='Result_exemple.json', attachment_type=AttachmentType.JSON)

Доброго дня. Столкнулся с проблемой, что не получается прикрепить к тесту файлы при падении оного. Точно установлено, что функци, в которые были встроен аллюр аттач отработали корректно. Как можно полечить проблему?
источник

TU

Telegram User in testing_in_python
если тест упал до строки с allure.attach - то вроде как ожидаемое поведение?
источник

A

Alexander in testing_in_python
в том то и дело. Всё отработало, как положено.
источник

TU

Telegram User in testing_in_python
ошибка до сих пор воспроизводится?
источник

A

Alexander in testing_in_python
Да
источник

A

Alexander in testing_in_python
Забыл уточнить, это происходит через дженкинс. Руками своей машине воспроизвожу, вроде падает в папку с отчётами, как положено
источник

TU

Telegram User in testing_in_python
почему только вроде?
источник

A

Alexander in testing_in_python
Потому что с моей точки зрения данное поведение не логично и я слегка сомневаюсь, может я "не под тем углом" смотрю)
источник

TU

Telegram User in testing_in_python
вложение должно прикрепиться к тесту, а не "падать в папку с отчетами"
источник

TU

Telegram User in testing_in_python
allure serve allure_results делаешь после теста? веб-сервер с аллюром запускается? там к тесту прикрепляется?
источник

TU

Telegram User in testing_in_python
это все - при запуске локально, а не через дженкинс, конечно.
источник