Size: a a a

testing_in_python

2020 November 27

ГК

Глеб Казаркин... in testing_in_python
есть вот такое решение через декоратор:
   def decorator_screenshot(func):
       def wrapper(*args, **kwargs):
           try:
              func(*args, **kwargs)
           except AssertionError:
               file_name = f'{datetime.today().strftime("%Y-%m-%d_%H:%M")}.png'.replace("/", "_").replace("::", "__")
               driver.save_screenshot(file_name)
               raise
       return wrapper

Получается просто добавляю ещё 1 except?
источник

А

Алексей in testing_in_python
Если знаете тип ошибки - да
источник

А

Алексей in testing_in_python
если не знаете - на любой жксепшн снимайте экран и пишите в лог
источник

А

Алексей in testing_in_python
def assert_wrapper(func):
   def func_wrapper(*args, **kwargs):
       try:
           return func(*args, **kwargs)
       except AssertionError as ae:
           logger.error(f"Assertion failed: {ae}")
           raise
       except Exception as e:
           logger.exception(str(e))
           logger.error(f"Error: {e}")
           raise

   update_wrapper(func_wrapper, func)
   return func_wrapper
типа такого, добавьте соотв снятие скриншота
источник

А

Алексей in testing_in_python
и соотв в конфтеест
def pytest_runtest_call(item):
   item._obj = assert_wrapper(item._obj)
источник

B

Bola in testing_in_python
я как-то делал несколько лет назад через class EventListeners(AbstractEventListener):

что-то вроде такого
class ScreenshotListener(AbstractEventListener):
   def on_exception(self, exception, driver):
       driver.get_screenshot_as_file("C:/Error.png")
источник

А

Алексей in testing_in_python
Bola
я как-то делал несколько лет назад через class EventListeners(AbstractEventListener):

что-то вроде такого
class ScreenshotListener(AbstractEventListener):
   def on_exception(self, exception, driver):
       driver.get_screenshot_as_file("C:/Error.png")
это если ловить строго селениум эксепшены. Враппер выше ловит и логирует любые.
источник

🍕

🍕 in testing_in_python
Всем привет
Новичок в автоматизация
Пишу тест на python unittest
У меня есть стек кейсов которые я должен выполнить
Но я не могу этого сделать так при запуске теста у меня шаги повторяються(так как наследую класс)
Вопрос как мне сделать что бы разбить test suit на шаги, что бы присутствовали анотации перед каждой функции?
источник

ТЭ

Тачами Экстович... in testing_in_python
🍕
Всем привет
Новичок в автоматизация
Пишу тест на python unittest
У меня есть стек кейсов которые я должен выполнить
Но я не могу этого сделать так при запуске теста у меня шаги повторяються(так как наследую класс)
Вопрос как мне сделать что бы разбить test suit на шаги, что бы присутствовали анотации перед каждой функции?
Я угадаю страну с трёх попыток
источник

ТЭ

Тачами Экстович... in testing_in_python
Первая К?
источник

🍕

🍕 in testing_in_python
Не понял
источник

ТЭ

Тачами Экстович... in testing_in_python
Что за стек кейсов? Какой тест сьют ты хочешь разбить? Что такое шаг в твоём понимании?
источник
2020 November 28

OC

Oleg Chaplashkin in testing_in_python
🍕
Всем привет
Новичок в автоматизация
Пишу тест на python unittest
У меня есть стек кейсов которые я должен выполнить
Но я не могу этого сделать так при запуске теста у меня шаги повторяються(так как наследую класс)
Вопрос как мне сделать что бы разбить test suit на шаги, что бы присутствовали анотации перед каждой функции?
Что ты вы очень много впихнули в одно действие.
Давайте по порядку:
1. У вас уже готовые тестовые случаи для автоматизации? Или у вас есть тестовые случаи для ручного тестирования и их вы пытаетесь перевести в автоматизацию? Или у вас нет ничего и вам нужно "написать автотесты"?

2. Разбиение шагов в тестовом случае это задача не тривиальная. Я обычно делаю два шага: выполнить действие, начать проверку. Безусловно перед этим множество фикстур, состояний и прочего.

3. Аннотации перед каждой функцией? Что для вас аннотация? У вас есть репортинг (например, Allure)? Если так, то либо через контекстный менеджер allure.step(""), либо оборачивать  декоратором. Первый вариант - просто описание, второй - описание + входные параметры в функцию

4. Ну и напоследок, если нет четкого понимания как строить тесты и как разбивать, то:
- выполните ручное тестирование и подробно запишите шаги;
- унифицируйте шаги (общие блоки можно вынести)
- напишите шаблон тестового модуля, где через заглушки (можно просто принтами) выобощначаете порядок действий;
- напишите полноценный тестовый модуль

как то так.
источник

TU

Telegram User in testing_in_python
Alexey Gridnev
сесть и сделать спокойно, а потом допиливать и рефакторить потихоньку
Пардон за цитирование годовой давности. Но путь был выбран схожий. Сейчас есть желание переписать большую часть. Как правильнее сделать - менять потихоньку имеющийся или написать на его основе новый?
источник

DG

Dmitriy Golubtsov in testing_in_python
Telegram User
Пардон за цитирование годовой давности. Но путь был выбран схожий. Сейчас есть желание переписать большую часть. Как правильнее сделать - менять потихоньку имеющийся или написать на его основе новый?
Нет универсального ответа.
источник

АК

Александр Кот... in testing_in_python
Telegram User
Пардон за цитирование годовой давности. Но путь был выбран схожий. Сейчас есть желание переписать большую часть. Как правильнее сделать - менять потихоньку имеющийся или написать на его основе новый?
не факт что новый получится лучше и чище
источник

TU

Telegram User in testing_in_python
Александр Кот
не факт что новый получится лучше и чище
есть эталон к чему стоит стремиться?
источник

IS

Idi Suda in testing_in_python
Telegram User
есть эталон к чему стоит стремиться?
Нет
источник

M

Merg in testing_in_python
Idi Suda
Нет
Пустая директория - не эталон?
источник

IS

Idi Suda in testing_in_python
Merg
Пустая директория - не эталон?
Эталон автоматизатора - дворник Петрович, потому что он не написал ни единой строки кода
источник