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

Товарищи, а подскажите пожалуйста, как в расте принято делать интеграционные

тесты?
Задача: есть внешний компонент-сервер, с ним взаимодействие через grpc. Хочу написать тестовый клиент, который будет осуществлять подключения и гонять разные сценарии. При этом я хочу пользоваться фикстурами и параметрическими тестами.
На плюсах я бы просто заюзал гуглотесты. На расте встроенный фреймворк тестовый вроде не очень подходит: он заточен будто бы на тестирование именно внутренностей, а не на интеграционные тесты.

9 ответов

15 просмотров

Создаёшь директорию tests/ в корне и кладёшь туда тесты, по одному тесту в файл

Alex- Автор вопроса
Max Силинг
Создаёшь директорию tests/ в корне и кладёшь туда ...

и эти тесты будут запускаться как обычно cargo test?

Alex- Автор вопроса
Max Силинг
Которые лежат в tests — да

вот именно такой подход мне и кажется странным потому что cargo test - он же идейно вроде как прогоняет тесты для текущего проекта а у меня по сути мой проект на расте и есть один большой набор тестов я хочу чтобы у меня просто запускался бинарь как обычно а сам бинарь внутри себя прогонит все сценарии на текущий момент я бы написал в условном tests.rs кучу методов (один метод - один сценарий) и в main по очереди бы их дернул, это выполняет мою задачу но в таких условиях мне придется самому изобретать фикстуры и вот это вот все я верю, что есть какой-то общепринятый фреймворк для этого

Alex
вот именно такой подход мне и кажется странным пот...

Фикстур в встроенном тестовом фреймворке нет вообще. Запустить тесты без интеграционных — cargo t --lib. Что ты хочешь в целом я понял слабо.

Alex- Автор вопроса
Max Силинг
Фикстур в встроенном тестовом фреймворке нет вообщ...

и правда наверное мутно объяснил, давайте попробую полностью описать задачу есть некий абстрактный сервер, он написан не на расте (в моем случае на питоне) к этому серверу обращаются клиенты, в моем случае через rpc - чего хочется сделать: написать клиент на расте, который будет дергать методы сервера по rpc в разных сценариях, таким образом тестируя сервер по сути это будет интеграционное тестирование - как я могу это сделать: написать на расте набор функций, каждая из которых будет реализовывать какой-то сценарий доступа к серверу. в main дернуть все ф-ции по очереди - чем мне не нравится такой подход: было бы удобно и "органично" использовать такие примитивы как фикстура и параметризованные тесты. переизобретать их в своем коде не хочется. однако, такие примитивы будто бы предлагают только фреймворки для юнит- тестирования (например rstest). юнит тестирование предполагает, что я написал какой-то код на расте и хочу к нему написать тесты - это не моя ситуация

Alex
и правда наверное мутно объяснил, давайте попробую...

По моему с точки зрения фреймворков для тестирования вообще нет ни какой разницы между юнит тестами или ещё каким-то. Фреймворки просто облегчают написание тестов, предоставляя всякие утилиты и функции полезные именно в контексте тестирования (например фикстуры, красивые отчёты и трейсбеки). Так что можете использовать эти фреймворки как угодно.

Alex- Автор вопроса
Kai Ren
cucumber_rust глянь

выглядит как то, что нужно спасибо!

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

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

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
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
3
Карта сайта