Issue: when i define dynamic parameterization and static parameterization of different fixtures, the generated ids of tests using both are messed up, depending on how you call pytest.
Tested on python 3.7.4, 3.8.2 with pytest 6.2.2
Setup:

conftest.py:
import _pytest.python
import pytest
def pytest_generate_tests(metafunc: _pytest.python.Metafunc):
if 'fixture_a' in metafunc.fixturenames:
metafunc.parametrize('fixture_a', ['a1', 'a2'])
# if 'fixture_b' in metafunc.fixturenames:
# metafunc.parametrize('fixture_b', ['b3', 'b4'])
@pytest.fixture(params=['b3', 'b4'])
def fixture_b(request):
return request.param
test_general.py:
import _pytest.python
import pytest
def test_b(fixture_a, fixture_b):
print('test_b', fixture_a, fixture_b)
assert True
Running pytest --co dir1:

Running pytest --co dir1/dir2:

Notice the test ids are incorrect (fixture_b comes first)
If I use the change fixture_b to use dynamic parameterization then the test ids would be correct (uncomment the lines in conftest.py and comment out the static parameterization.
Issue: when i define dynamic parameterization and static parameterization of different fixtures, the generated ids of tests using both are messed up, depending on how you call pytest.
Tested on python 3.7.4, 3.8.2 with pytest 6.2.2
Setup:

conftest.py:
test_general.py:
Running

pytest --co dir1:Running

pytest --co dir1/dir2:Notice the test ids are incorrect (fixture_b comes first)
If I use the change
fixture_bto use dynamic parameterization then the test ids would be correct (uncomment the lines in conftest.py and comment out the static parameterization.