我想測驗我的視圖,但我的洗掉功能有問題。
class AnimalView(APIView):
def delete(self, request, format = None):
id = int(request.GET.get('id'))
try:
animal = Animal.objects.get(id=id)
except:
return Response(status=status.HTTP_404_NOT_FOUND)
animal.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
這是我的模型:
class Animal(models.Model):
name = models.CharField(unique=True, max_length=30, blank=False, null=False)
class Meta:
managed = True
db_table = 'animal'
ordering = ['name']
def __str__(self):
return str(self.name)
這是我正在嘗試進行的測驗:
class TestURL(TestCase):
def setUp(self):
self.client = Client()
def test_animal_delete(self):
animal = Animal.objects.create(name = 'TestAnimal')
response = self.client.delete(reverse("category_animal"), json.dumps({'id' : animal.id}))
self.assertEqual(status.HTTP_204_NO_CONTENT,response.status_code )
但我得到了一個
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
你能幫我做測驗嗎?
uj5u.com熱心網友回復:
由于資料在 中編碼request.GET,因此應該在查詢字串中進行編碼,因此:
response = self.client.delete(f'{reverse("category_animal")}?id={animal.id}')
然而,在查詢字串中定義它是很奇怪的。通常使用 URL 引數,或者在請求的內容上指定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/348907.html
標籤:Python 姜戈 单元测试 自动化测试 python-unittest
