Полный путь к API в модульных тестах

Есть ли способ указать полный путь для url, когда я тестирую API. Сейчас я делаю это следующим образом:

def test_product_types_retrieve(self):
    self.relative_path = '/api/api_product/'
    response = self.client.get(self.relative_path + 'product_types/')

Я должен добавлять часть relative_path в каждый запрос, но я хочу установить его, например, в функции setUp. Без self.relative_path я получу http://localhost:8000/product_types/ вместо http://localhost:8000/api/api_product/product_types/

Структура моего проекта следующая, каждый api имеет свой urls.py с настройками urlpatterns.

Структура проекта

Вы можете сделать это, вы затем устанавливаете относительный путь в setUp и вызываете api из call_api, можете передать args и kwargs через это.

Тогда, если в тесте вам нужен другой relative_path, вы можете просто установить его в этом тесте и по-прежнему вызывать call_api.

class ExampleTestCase(TestCase):
    def setUp(self):
        self.relative_path = '/api/api_product/'

    def call_api(self, endpoint):
        return self.client.get(self.relative_path + endpoint)

    def test_product_types_retrieve(self):
        response = self.call_api('product_types/')

    def test_requires_different_path(self):
        self.relative_path = '/api/api_product/v1/'
        response = self.call_api('product_types/')
Вернуться на верх