Size: a a a

testing_in_python

2021 January 28

DG

Dmitriy Golubtsov in testing_in_python
Aleksei Moskvin
run_dag - fixture, хочу, чтобы она была в test body, но приэтом оставалась фикстурой, потому что она должна выполниться 1 раз перед всеми тестами в классе, как раз для фикстуры задачка
Ты же понимаешь, что фикстура, она на то и фикстура, чтоб не выполняться в body.
источник

P

Philip in testing_in_python
> потому что она должна выполниться 1 раз перед всеми тестами в классе,

А хочешь, чтобы это было в каждом test_body. То есть фактически во втором тесте этих действий не будет, но в логе чтобы запись была?
источник

P

Philip in testing_in_python
Закономерный вопрос: зачем? Happy debugging!
источник

NR

Nikolay Romeiko in testing_in_python
Подскажите плз, что-то застрял. Как можно скипнуть тест, если pytest ранится с определенным аргументом?
pytest —leaderboard disabled
@pytest.mark.skipif(_pytest.config.getoption('--leaderboard') == 'disabled', reason="Leaderboard is disabled.")
Что-то такое пробую соорудить
источник

EB

Evgenii B in testing_in_python
источник

СС

Сказочный Сникерс... in testing_in_python
или можно так
from functools import wraps
import pytest


def skip_if_option(option):
   def deco(f):
       @wraps(f)
       def wrapper(*args, **kwargs):
           if request := kwargs.get('request'):
               if request.config.getoption(option, None) is not None:
                   pytest.skip(f'Got option "{option}". Skipping...')
           return f(*args, **kwargs)
       return wrapper
   return deco


@skip_if_option(option='some_option')
def test_option(request):
   pass
источник

СС

Сказочный Сникерс... in testing_in_python
мда
источник

СС

Сказочный Сникерс... in testing_in_python
источник

СС

Сказочный Сникерс... in testing_in_python
или даже вот так, чтобы реквест в каждый тест не прописывать

https://pastebin.com/xGdtU0yh
источник

NR

Nikolay Romeiko in testing_in_python
может туплю, но не работает
источник

СС

Сказочный Сникерс... in testing_in_python
и не будет работать
источник

NR

Nikolay Romeiko in testing_in_python
Сказочный Сникерс
и не будет работать
так работает - спасибо
источник

СС

Сказочный Сникерс... in testing_in_python
прикинь когда выполняется код который приложен в линке, и когда код теста. и что такое pytest.config в контексте это кода
источник

СС

Сказочный Сникерс... in testing_in_python
но есть еще более крутое решение)
источник

СС

Сказочный Сникерс... in testing_in_python
advanced так сказать
источник

СС

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

СС

Сказочный Сникерс... in testing_in_python
но тогда он даже не попадет в отчет (в принципе не запустится)
источник

NR

Nikolay Romeiko in testing_in_python
я пока сооружаю первый раз тесты на коммерческой основе - так что стараюсь просто, что бы работало и не слишком криво все было написано в моем понимании)
источник

СС

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

@pytest.mark.skip_leaderboard
def test():
   pass


все остальное сделает хук
источник

СС

Сказочный Сникерс... in testing_in_python
ну кстати в хуке можно и не выкидывать, а скипать
источник