Size: a a a

Сообщество Python Программистов

2021 January 25

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Я чот не вижу особо подводных
источник

A

AstralRomance in Сообщество Python Программистов
Энивей, как мне сделать, чтобы оно работало? Мне надо из фикстуры много раз передавать штуки в тест. Щас у меня все падает, потому что говорит, что в моей фикстуре больше одного уелда.
@pytest.fixture()
   def symbol_return_test(self):
       symbols = [lt for lt in string.ascii_lowercase]
       symbols.extend([str(n) for n in range(10)])
       api_sections = [''.join((section, '?search=')) for section in ['/people/', '/films/', '/starships/', '/vehicles/', '/species/', 'planets']]
       api_requests = [''.join(parameter) for parameter in itertools.product(api_sections, symbols)]
       for request_item in api_requests:
           yield ''.join((self.SW_API_BASE_LINK, request_item))
<...>
def test_symbol(self, symbol_return_test):
       swapi_request = requests.get(symbol_return_test)
       if symbol_return_test[-1] in ['6', '9', '0']:
           assert int(swapi_request.json()['count']) == 0
       else:
           assert int(swapi_request.json()['count']) >= 1
источник

A

AstralRomance in Сообщество Python Программистов
Потому что у них задание написано так.
Смари, в задании написано "проверь, что любой поисковый запрос на эту апишку, кроме 0, 6, 9 - вернет минимум один результат".
Но если ты кидаешь запросы не только на тот адрес, который был в заданиях раньше, то 0, 6 и 9 вернет тебе больше, чем 1.
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
AstralRomance
Потому что у них задание написано так.
Смари, в задании написано "проверь, что любой поисковый запрос на эту апишку, кроме 0, 6, 9 - вернет минимум один результат".
Но если ты кидаешь запросы не только на тот адрес, который был в заданиях раньше, то 0, 6 и 9 вернет тебе больше, чем 1.
Падажжи, это ж тест одного конкретного эндпойнта который делает поиск, не?
источник

A

AstralRomance in Сообщество Python Программистов
Бензофуран Гетероцикл
Падажжи, это ж тест одного конкретного эндпойнта который делает поиск, не?
Там на каждом эндпоинте свой поиск.
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Бензофуран Гетероцикл
Вот тебе композ с автораспаковкой кортежей

def compose_unpack(chain):
   if not any(map(callable, chain)):
       raise ValueError("chain must be iterable of callables")
   def composed(*args, **kwargs):
       func, *funcs = chain
       result = func(*args, **kwargs)
       for func in funcs:
           if isinstance(result, tuple):
               result = func(*result)
           else:
               result = func(result)
       return result
   return composed
Кстати эта пижня может наебать глубину рекурсии)
источник

A

AstralRomance in Сообщество Python Программистов
Кроме всего прочего, кста, там есть root эндпоинт, на который тоже можно кинуть ?search=6
И он вернет результат, только без того параметра, который они хотят проверять.
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Бензофуран Гетероцикл
Кстати эта пижня может наебать глубину рекурсии)
Но не совсем наебать
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
AstralRomance
Там на каждом эндпоинте свой поиск.
Ну так эта, я ж всё задание не видел)
источник

A

AstralRomance in Сообщество Python Программистов
AstralRomance
Энивей, как мне сделать, чтобы оно работало? Мне надо из фикстуры много раз передавать штуки в тест. Щас у меня все падает, потому что говорит, что в моей фикстуре больше одного уелда.
@pytest.fixture()
   def symbol_return_test(self):
       symbols = [lt for lt in string.ascii_lowercase]
       symbols.extend([str(n) for n in range(10)])
       api_sections = [''.join((section, '?search=')) for section in ['/people/', '/films/', '/starships/', '/vehicles/', '/species/', 'planets']]
       api_requests = [''.join(parameter) for parameter in itertools.product(api_sections, symbols)]
       for request_item in api_requests:
           yield ''.join((self.SW_API_BASE_LINK, request_item))
<...>
def test_symbol(self, symbol_return_test):
       swapi_request = requests.get(symbol_return_test)
       if symbol_return_test[-1] in ['6', '9', '0']:
           assert int(swapi_request.json()['count']) == 0
       else:
           assert int(swapi_request.json()['count']) >= 1
Но у меня все еще с вот этим вопрос. Типа, я хочу много раз yield иться, а мне не дают. Как быть?
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
AstralRomance
Но у меня все еще с вот этим вопрос. Типа, я хочу много раз yield иться, а мне не дают. Как быть?
Йелдни итерабль🌚
источник

A

AstralRomance in Сообщество Python Программистов
Бензофуран Гетероцикл
Йелдни итерабль🌚
Так тогда надо будет в теле теста итерироваться по next же.
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Фикстуры же работают так что ты делаешь некоторый сетап, йелдишь, и после йелда делаешь сетдаун
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
def sample():
   setup()
   yield ...
   teardown()
источник

A

AstralRomance in Сообщество Python Программистов
Хм, тогда мне надо эту срань куда-то вовне воткнуть и передавать по очереди в фикстуру как аргумент?
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
AstralRomance
Так тогда надо будет в теле теста итерироваться по next же.
map🌚
источник

A

AstralRomance in Сообщество Python Программистов
Хуяп.
источник

R3

Rud 356 in Сообщество Python Программистов
AstralRomance
Хуяп.
Аргументированно
источник

A

AstralRomance in Сообщество Python Программистов
Rud 356
Аргументированно
Ну, типа, это будет мап только чтобы реквесты раскидать. А мне еще ассертить надо. Так еще и с условиями.
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
AstralRomance
Ну, типа, это будет мап только чтобы реквесты раскидать. А мне еще ассертить надо. Так еще и с условиями.
Определи функцию-проверялку для мапа, лол🌚
источник