'FastAPI model test importing errors

I try to write tests for my FastAPI application but I get some import errors.

I'm trying to do very simple testing for my models, e.g.:

models/example.py:

class ExampleDbModel(ExampleBase, table=True):
    __tablename__ = "example"
    id: str
    name: str
    relation_id: str = Field(foreign_key="another_example.id")
    ...

    relation: AnotherExampleDbModel = Relationship()

class AnotherExampleDbModel(AnotherExampleBase, table=True):
    __tablename__ = "another_example"
    id: str
    some_field: str
    relation_id: str = Field(foreign_key="third_example.id")    
    ...

    relation: ThirdExampleDbModel = Relationship()

tests/test_example.py:

def test_example():
    example = ExampleDbModel(name="test")
    fields = [
        "id",
        "name",
        ...
    ]

    class_fields = example.dict().keys()
    diff = set(fields) ^ set(list(class_fields))
    assert not diff

This gives me an error: sqlalchemy.exc.InvalidRequestError: Table 'third_example' is already defined for this MetaData instance. Specify 'extend_existing=True' to redefine options and columns on an existing Table object.. Am I right when assuming it's because the model AnotherExampleDbModel has its own fk relation to another table? How could I test a model that has relations to another table (which has relations to another table)?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source