【发布时间】:2022-01-04 20:15:30
【问题描述】:
conftest.py
import pytest
from ...main import app as starter
from fastapi.testclient import TestClient
@pytest.fixture(autouse=True, scope="module")
def client():
client = TestClient(starter)
return client
test_main.py
import pytest
@pytest.mark.unit
def test_root(client):
response = client.get("/")
assert response.json() == {"message": "Hello Bigger Applications!"}
test_router.py
import pytest
@pytest.mark.unit
class TestHelloRouter:
def test_hello(client):
response = client.get("/hello")
assert response.json() == {"message": "Hello Router!"}
@pytest.mark.unit
class TestUserRouter:
def test_read_users(client):
response = client.get("/users/")
assert response.json() == [{"username": "Rick"}, {"username": "Morty"}]
def test_read_user_me(client):
response = client.get("/users/me")
assert response.json() == {"username": "fakecurrentuser"}
def test_read_user(client):
username = "unit-test"
response = client.get(f"/users/{username}")
assert response.json() == {"username": username}
为什么我在 test_router.py 文件中的所有测试都收到此错误? client的fixture范围应该是session,autouse应该设置为true吗?
E AttributeError: 'TestUserRouter' object has no attribute 'get'
E AttributeError: 'TestHelloRouter' object has no attribute 'get'
【问题讨论】:
标签: python unit-testing testing pytest fixtures