170 похожих чатов

Всем привет! Мне говорят, что в тестировании существует такая практика,

что если используется непредсказуемый айди, то в фикстурах вместо реальных айди используется AUTO, и тестирующая программа потом заменяет сама AUTO на айди созданного объекта (тест получения объекта по айди, загружается фикстура из файла в словарь, в словаре заменяется). Это так, или есть способ получше?

18 ответов

15 просмотров
Алексей- Автор вопроса

То есть например в фикстурах такой тест, который ранее работал через айди, которые были от 1 до N, а сейчас они непредсказуемы. И код получается сам заменит до выполнения теста айди на нужные. Это так, или лучше сделать как-то по другому?

А данные потом в реляционную бд загружаются?

Алексей- Автор вопроса
Michael Pokrovsky
А данные потом в реляционную бд загружаются?

Конечно. Для тестов создаётся база данных, после тестов удаляется, для каждого объекта набор тестов на создание, получение списка, получение по айди, изменения, удаления в рамках одной бд.

Алексей
Конечно. Для тестов создаётся база данных, после т...

Я обычно держу актуальный sql-дамп для этого, в insert можно пропускать значения sequence-полей например, фикстуры в виде json уже некий архаизм на мой взгляд

Алексей- Автор вопроса
Michael Pokrovsky
Я обычно держу актуальный sql-дамп для этого, в in...

Ну даже если так, это не решает моей проблемы (:

Алексей- Автор вопроса
Michael Pokrovsky
Нет json, нет проблем)

Это абсолютно не решает проблему получения объекта по айди, ведь он неизвестен до запуска теста. У меня есть такой вариант: в фикстурах специальное значение заменять нужным айди до проверки теста, но я спрашивал, есть ли вариант получше, так как немного похоже на хак какой-то, хоть мне и говорят, что нормальная практика

Алексей
Это абсолютно не решает проблему получения объекта...

Можно пожалуйста пример тестов, где требуется id, который неизвестен притом

Алексей- Автор вопроса
Michael Pokrovsky
Можно пожалуйста пример тестов, где требуется id, ...

https://github.com/bitcartcc/bitcart/blob/master/tests/fixtures/data/users.json#L74

Алексей
https://github.com/bitcartcc/bitcart/blob/master/t...

Ммм...свой тестовый фреймворк поверх пайтест? Ну наверно успехов тогда

Алексей- Автор вопроса
Michael Pokrovsky
Ммм...свой тестовый фреймворк поверх пайтест? Ну н...

Сказать что это плохо это конечно хорошо. А предложить альтернативу? Это не тулинг, а просто миксин для упрощения тестирования схожих endpoint'ов, данные задаются в таком формате. Что не так?

Алексей
Сказать что это плохо это конечно хорошо. А предло...

Выкинуть async/await из тестов, выкинуть, gino, заюзать sqlalchemy, выкинуть декларативные описание кейсов в json, чем классические ассерты не угодили не понятно, тестируемые сущности оформить в виде датаклассов, ...

Алексей- Автор вопроса
Michael Pokrovsky
Выкинуть async/await из тестов, выкинуть, gino, за...

Чем классические ассерты не угодили? Ну там просто у разных объектов все повторяется, endpoint'ы по одному шаблону, поэтому и для тестов шаблон. Хотя возможно parameterize просто сделать? Выкинуть async/await из некоторых тестов нельзя, так как они как раз и тестируют асинхронные функции Выкинуть gino и взять sqlalchemy - поддержка асинхронщины там бета, и все решения, которые только могли быть, я уже пробовал, поэтому позже сделаем

Алексей- Автор вопроса
Michael Pokrovsky
1.4 вышла уже из бэты

1.4 вышла, я говорю про поддержку асинхронщины. С версии 1.4.3 она только в бету перешла, еще может меняться и не очень стабильно все

Алексей
Чем классические ассерты не угодили? Ну там просто...

Из асинхронного увидел обращения к бд, ну тут видимо вы не хотели использовать sqlalchemy sql expression syntax, и сделали все через gino, ещё использовали асинхронный хттп клиент, хотя вроде есть синхронная альтернатива, ещё обращения к редису, к каким-то объектам очередей и т.п. Пробежался в целом по проекту, не увидел необходимость в использовании эвент лупа. Все равно корутины будут ожидать освобождение коннекта из пула, и все преимущества нивелируются, может я чего-то не понимаю конечно

Алексей- Автор вопроса
Michael Pokrovsky
Из асинхронного увидел обращения к бд, ну тут види...

Не хотел использовать sqlalchemy syntax? (: А gino это что?) Это sqlalchemy core и диалект для asyncpg, ничего больше. Так что алхимия и алембик так или иначе используется. У нас сторонние сервисы, к ним сдк асинхронное. А вообще просто большая часть времени как раз на I/O тратиться, поэтому тоже асинхронно. Менять мы уже точно не будем, нет смысла Вряд ли можно большой проект понять, быстренько просмотрев (: Но спасибо за предложения улучшений и потраченное время)

Алексей
Не хотел использовать sqlalchemy syntax? (: А gino...

Аналогия с Gino - это как использовать pandas или numpy, и говорить что пишешь на C :) не за что, обращайтесь :)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта