Я пишу тесты для конечных точек приложения Flask. Первая конечная точка принимает составной запрос и сохраняет предоставленные файлы на сервере. Вторая конечная точка извлекает метаданные сохраненных файлов.
Я хочу создать расширяемые тесты для этих конечных точек, но не знаю, как правильно расположить фикстуры и параметры. Предположим, что публикация файла — это дорогостоящая операция, которую я хочу выполнять только один раз для каждого класса. Вот упрощенный код того, чего я хочу достичь:
Тесты вызывают ScopeMismatch: вы пытались получить доступ к приспособлению области действия функции. input_file_id с объектом запроса в области класса.. Судя по всему, input_file_id имеет область действия function, хотя я установил для нее значение class.
Я могу изменить области действия в функцию, но я хочу загружать файл один раз для каждого набора данных, а не для каждой тестовой функции.
Я слышал, что это хорошая практика — иметь только одно утверждение для каждого тест, но верно ли это в данном случае?
Мне приходится повторять аргументы ожидаемая_метка и ожидаемый_медиа_тип в тестах, которые их не используют. Как этого избежать?
На аналогичный вопрос уже ответил pytest: объединить параметризацию уровня класса с фикстурами в области класса, но я не смог применить его к своему случаю , поскольку моя параметризация также включает ожидаемые значения.
Я пишу тесты для конечных точек приложения Flask. Первая конечная точка принимает составной запрос и сохраняет предоставленные файлы на сервере. Вторая конечная точка извлекает метаданные сохраненных файлов. Я хочу создать расширяемые тесты для этих конечных точек, но не знаю, как правильно расположить фикстуры и параметры. Предположим, что публикация файла — это дорогостоящая операция, которую я хочу выполнять только один раз для каждого класса. Вот упрощенный код того, чего я хочу достичь: [code]@pytest.mark.parametrize( ("title", "content_type", "expected_label", "expected_media_type"), [ ("My Title", "text/plain; charset=UTF-8", "My Title", "text/plain"), # remaining test parameters ... ] ) class TestUploadFile: @pytest.fixture(scope="class") def input_file_id(self, app_client, title, content_type): r = app_client.post( "/upload", data={"file": (open("example.txt", "rb"), title, content_type} ) return r.json["file"]. # response contains file id
def test_file_has_media_type(self, file_resource, expected_label, expected_media_type): assert file_resource.json["mediaType"] == expected_media_type [/code] Вот проблемы и вопросы, которые у меня возникли: [list] [*]Тесты вызывают ScopeMismatch: вы пытались получить доступ к приспособлению области действия функции. input_file_id с объектом запроса в области класса.. Судя по всему, input_file_id имеет область действия function, хотя я установил для нее значение class. [*]Я могу изменить области действия в функцию, но я хочу загружать файл один раз для каждого набора данных, а не для каждой тестовой функции. [*]Я слышал, что это хорошая практика — иметь только одно утверждение для каждого тест, но верно ли это в данном случае? [*]Мне приходится повторять аргументы ожидаемая_метка и ожидаемый_медиа_тип в тестах, которые их не используют. Как этого избежать? [/list] На аналогичный вопрос уже ответил pytest: объединить параметризацию уровня класса с фикстурами в области класса, но я не смог применить его к своему случаю , поскольку моя параметризация также включает ожидаемые значения.
I am currently working on a data visualisation project. I need to create a stacked bar chart using Bokeh. The data is sourced from an Excel file that is updated regularly and contains multiple inputs and outputs. The structure of the data can vary,...
Я использую crate Midir в версии 0.10.0 для приема и отправки MIDI-сигналов на моем компьютере с Linux. На основе примера кода в их репозитории я создал небольшой пример, в котором я просто открываю входное и выходное соединение. В принципе это...
Мне нужно применить функцию с интенсивными вычислениями, в основном состоящую из вызовов функций numpy, к столбцу поляра DataFrame, который имеет тип данных pl.Array(...). Нужен метод потоковой передачи, так как мои фактические данные обычно...