DRFで調整をテストする適切な方法は何ですか?私はネット上でこの質問に対する答えを見つけることはできません。私は各エンドポイントがカスタムリクエスト制限(ScopedRateThrottle)を持っているので、各エンドポイントごとに別々のテストをしたいと思います。DRFでスロットルをテストする適切な方法は何ですか?
重要なことは、他のテストに影響を与えることができないことです。スロットルや制限なしで何とか実行する必要があります。
DRFで調整をテストする適切な方法は何ですか?私はネット上でこの質問に対する答えを見つけることはできません。私は各エンドポイントがカスタムリクエスト制限(ScopedRateThrottle)を持っているので、各エンドポイントごとに別々のテストをしたいと思います。DRFでスロットルをテストする適切な方法は何ですか?
重要なことは、他のテストに影響を与えることができないことです。スロットルや制限なしで何とか実行する必要があります。
すでに言及した人と同じように、これはまさにユニットテストの範囲内に収まっていないが、それでも、方法については、単にこのような何かやって:、、また
from django.core.urlresolvers import reverse
from django.test import override_settings
from rest_framework.test import APITestCase, APIClient
class ThrottleApiTests(APITestCase):
# make sure to override your settings for testing
TESTING_THRESHOLD = '5/min'
# THROTTLE_THRESHOLD is the variable that you set for DRF DEFAULT_THROTTLE_RATES
@override_settings(THROTTLE_THRESHOLD=TESTING_THRESHOLD)
def test_check_health(self):
client = APIClient()
# some end point you want to test (in this case it's a public enpoint that doesn't require authentication
_url = reverse('check-health')
# this is probably set in settings in you case
for i in range(0, self.TESTING_THRESHOLD):
client.get(_url)
# this call should err
response = client.get(_url)
# 429 - too many requests
self.assertEqual(response.status_code, 429)
を副作用のあなたの懸念についてsetUp
またはsetUpTestData
でユーザー作成を行う限り、テストは(必要に応じて)分離されるため、その意味で「汚い」データまたはスコープについて心配する必要はありません。
cache clearing between testsについては、tearDown
にcache.clear()
を追加するか、specific key defined for throttlingを試してクリアします。
あなた自身に尋ねなければならない最初の質問:コードをテストしていますか?通常、単体テストで第三者コードをテストするのは意味がありません。それが第三者の仕事です。統合と動作テストでそれらをテストすることができます。あなたは、あなたがしたいテストの種類について何も書いていませんでした。 –
ありがとう、ありがとう@KlausD。、私はそれをテストするつもりはない。 – Glen
ローカルユニットテストやCIテストスイートにこのようなテストを含めることはおそらく意味がありません。しかし、私はそのようなテストは、エンドポイントのサブセットで、定期的なパフォーマンステストの一部として価値があると思う。だから私はまだこれについて合理的に単純で繰り返し可能なテストを理解することに興味があります。 –