Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

158
Visualizações
pytest usando accesorios como argumentos en parametrizar

Me gustaría usar accesorios como argumentos de pytest.mark.parametrize o algo que tenga los mismos resultados.

Por ejemplo:

 import pytest import my_package @pytest.fixture def dir1_fixture(): return '/dir1' @pytest.fixture def dir2_fixture(): return '/dir2' @pytest.parametrize('dirname, expected', [(dir1_fixture, 'expected1'), (dir2_fixture, 'expected2')] def test_directory_command(dirname, expected): result = my_package.directory_command(dirname) assert result == expected

El problema con los parámetros del dispositivo es que cada parámetro del dispositivo se ejecutará cada vez que se use, pero no quiero eso. Quiero poder elegir qué accesorios se usarán según la prueba.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si está en pytest 3.0 o posterior, creo que debería poder resolver este escenario en particular escribiendo un accesorio como:

 @pytest.fixture(params=['dir1_fixture', 'dir2_fixture']) def dirname(request): return request.getfixturevalue(request.param)

Documentos aquí: http://doc.pytest.org/en/latest/builtin.html#_pytest.fixtures.FixtureRequest.getfixturevalue

Sin embargo, no puede usar este enfoque si el dispositivo que intenta cargar dinámicamente está parametrizado.

Alternativamente, es posible que pueda resolver algo con el enlace pytest_generate_tests. Sin embargo, no he sido capaz de obligarme a investigar tanto.

over 4 years ago · Santiago Trujillo Relatório

0

Will estaba en el camino correcto , debe usar request.getfixturevalue para recuperar el accesorio.

Pero puedes hacerlo bien en la prueba, que es más sencilla.

 @pytest.mark.parametrize('dirname, expected', [ ('dir1_fixture', 'expected1'), ('dir2_fixture', 'expected2')]) def test_directory_command(dirname, expected, request): result = my_package.directory_command(request.getfixturevalue(dirname)) assert result == expected

Otra forma es usar el complemento perezoso :

 @pytest.mark.parametrize('dirname, expected', [ (pytest.lazy_fixture('dir1_fixture'), 'expected1'), (pytest.lazy_fixture('dir2_fixture'), 'expected2')]) def test_directory_command(dirname, expected): result = my_package.directory_command(dirname) assert result == expected
over 4 years ago · Santiago Trujillo Relatório

0

Por ahora, mi única solución es crear un accesorio que devuelva un diccionario de accesorios.

 import pytest import my_package @pytest.fixture def dir1_fixture(): return '/dir1' @pytest.fixture def dir2_fixture(): return '/dir2' @pytest.fixture def dir_fixtures( dir1_fixture, dir2_fixture ): return { 'dir1_fixture': dir1_fixture, 'dir2_fixture': dir2_fixture } @pytest.mark.parametrize('fixture_name, expected', [('dir1_fixture', 'expected1'), ('dir2_fixture', 'expected2')] def test_directory_command(dir_fixtures, fixture_name, expected): dirname = dir_fixtures[fixture_name] result = my_package.directory_command(dirname) assert result == expected

No es el mejor ya que no usa una solución integrada en pytest, pero funciona para mí.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda