我有一个API ListView端点,当我用Postman拍摄它时可以正常工作,但是在测试中返回空的查询集和状态404:
multipartFormData.append(imageData,
withName: "image",
fileName: "image.jpg",
mimeType: "image/jpeg")
我使用pytest固定装置创建对象:
web_1 | > assert response.status_code == 200
web_1 | E assert 404 == 200
固定装置在其他(不是API)测试中可以正常工作,因此我认为问题可能出在我测试API的方式上。在pycharm调试器中,我可以看到该视图已执行,因此这不是URL问题。
在邮递员中,此端点正确返回一个带有事件对象和状态200的json。
@pytest.fixture
def event(system, new_conflict):
return Event.objects.create(
system=system,
event_type='new_conflict',
details=new_conflict
)
from rest_framework.test import APIClient
from event_finder.models import Event
import pytest
@pytest.mark.django_db
def test_list_events_all(event):
client = APIClient()
response = client.get(path='/api/events/', format='json')
assert response.status_code == 200
答案 0 :(得分:0)
这是一个非常简单的示例。但是也许您可以使它像这样工作:
from rest_framework.test import APITransactionTestCase
from rest_framework.test import status
class TestThis(APITransactionTestCase):
def test_this(self):
data = {"key": "value"}
response = self.client.post("/api/resource", data=data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
我希望它会有所帮助。
答案 1 :(得分:0)
好的,显然我是个白痴,问题完全不同。我的网址由于最后/
而无法使用。更改为:
response = client.get(path='/api/events',
format='json')
,效果很好。不知道为什么我以前没有抓住它,我正在使用Pycharm调试器运行整个应用程序,并执行了视图。
说实话,在阅读the docs之后,我很惊讶我的装置作品。根据文档,我应该将db
灯具添加到我的灯具中,但是没有它也可以正常工作。
感谢您的帮助,并浪费您的时间。