pdjohntony / vcrpy-cassette-mgr

Easily open or delete vcrpy cassettes within your tests.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

No cassette found when test function is args are multiline

pdjohntony opened this issue · comments

No cassette is found for the following example:

@pytest.mark.vcr
@pytest.mark.parametrize(
    "field, value",
    [
        ("addressDescription", "Fake Address"),
        ("addressDescription", ""),
        ("name", "Fake Location"),
        ("name", ""),
    ],
)
def test_msteams_service_emergency_location_update_bad_raises(
    mstsc, field, value, emer_addr
):

I think its due to the (args) being multiline. Need to investigate further.

This issue is actually caused by the @pytest.mark.parametrize() decorator, which will result in multiple cassettes with different file names for a single test. The current code looks for a single cassette with a name that explicitly match the test name.

So the following test:

@pytest.mark.vcr
def test_msteams_service_emergency_location_get(mstsc)

Creates a cassette with the name:

test_msteams_service_emergency_location_get.yaml

But with the @pytest.mark.parametrize() decorator, the following test:

@pytest.mark.vcr
@pytest.mark.parametrize(
    "field, value",
    [
        ("addressDescription", "Fake Address"),
        ("addressDescription", ""),
        ("name", "Fake Location"),
        ("name", ""),
    ],
)
def test_msteams_service_emergency_location_update_bad_raises(
    mstsc, field, value, emer_addr
):

Creates 4 cassettes with the names:

test_msteams_service_emergency_location_update_bad_raises[addressDescription-].yaml
test_msteams_service_emergency_location_update_bad_raises[addressDescription-Fake Address].yaml
test_msteams_service_emergency_location_update_bad_raises[name-].yaml
test_msteams_service_emergency_location_update_bad_raises[name-Fake Location].yaml

I'm working on a fix to search for any number of cassette files that starts with the test name.

Fixed in 1.1.2