I have a python test that uses a fixture for credentials (a tuple of userid and password)
def test_something(credentials)(userid, password) = credentialsprint("Hello {0}, welcome to my test".format(userid))
and I have pytest fixture for credentials:
@pytest.fixture()
def credentials():return ("my_userid", "my_password")
It works great
Now I want to extend this for multiple credentials (say staging and production) so that my test will run twice (once each for staging and production).
I thought that parameterization was the answer, but it seems I can't parameterize with fixtures.
I would love to do something like this:
@pytest.fixture(params=[staging_credentials, production_credentials])
def credentials(request):return request.param
where staging_credentials and production_credentials are all fixtures:
@pytest.fixture()
def staging_credentials():return ("staging_userid", "staging_password")@pytest.fixture()
def production_credentials():return ("prod_userid", "prod_password")
but apparently parameters to the fixture can't be other fixtures.
Any suggestions on how to elegantly handle this? I've looked at https://docs.pytest.org/en/latest/proposals/parametrize_with_fixtures.html but that seems a but too brute force.
Thanks! Steve