为pytest设置flask test_client和postgresql

时间:2019-03-15 08:47:39

标签: python-3.x postgresql unit-testing flask pytest

我正在尝试设置我的客户端,以使用postgresql数据库测试烧瓶视图。 代码如下:

@pytest.fixture(scope='function')
def full_client(request):
    app = create_app(test_config=True)
    request.getfixturevalue('postgresql')
    engine = create_engine('postgresql+psycopg2://postgres:@127.0.0.1:5433/tests')
    session = sessionmaker(bind=engine)
    db.app = app
    db.create_all()
    client = app.test_client()
    return client, session()

在测试过程中,会话和客户端都可以正常工作,但不幸的是它们是独立的。数据存储在REAL数据库中,而不是“虚拟”数据库。

def test_if_returns_200(full_client):
    response = full_client[0].get('http://0.0.0.0:4000/api/')

    # Line below gives empty list -> But the view should have created that
    print(full_client[1].query(Model).all())

    # Part below adds row the database
    article = Model(text='Some text')
    full_client[1].add(article)
    full_client[1].commit()

    # Line belows shows that the Model instance is added
    print(full_client[1].query(Model).all())

    assert response.status_code == 200

如果视图返回200,则仅表示它已将模型数据保存到数据库中。 当我尝试手动测试时,一切都很好。

有什么建议吗?

预先感谢小伙子们和小姑娘们!

0 个答案:

没有答案