如何在FastAPI中测试客户端调用端点的正确方法?

时间:2020-08-11 13:24:30

标签: python pytest fastapi

我正在尝试进行单元测试,以检查是否调用了所需FastAPI端点的方法。进行t(column),并在测试期间输出错误,该方法被调用0次。尽管输出甚至包含来自端点方法的验证文本。如何解决此问题?

我的单元测试:

mock.spy

我在main.py中的端点代码:

client = TestClient(main.app)

pytestmark = pytest.mark.unit

@pytest.mark.unit
    def test_get_best_authors(mocker: MockFixture):
        mocker.spy(main, 'best_authors')
        client.get('/luchshie-avtori').json()
        assert main.best_authors.assert_called_once()

1 个答案:

答案 0 :(得分:1)

发生的事情是app.get装饰器正在获取函数的实际对象并将其内部存储在FastAPI应用程序中。

当您模拟best_authors时,对于FastAPI来说无关紧要,因为它将使用先前存储的对象。

老实说,我不会这样测试。我将进行单元测试,以测试best_authors的行为。

在这种情况下,这将嘲笑requests.get并确保已调用它并正确返回了结果。