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

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

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

18 ответов

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

То есть например в фикстурах такой тест, который ранее работал через айди, которые были от 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 :) не за что, обращайтесь :)

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

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

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Легче писать на C++ чем на C, если полностью не изучать C++, а знать только основное?
Алмаз
8
Карта сайта