Я использую django-pytest для проверки API-интерфейса Django Rest Framework. У меня есть тестовый модуль, который выглядит примерно так:Django test client vs. django-pytest
class TestClass:
def test_station_is_created(self, db, api_client):
StationFactory(name='foo')
response = api_client.get(reverse('api:stations'))
assert response.status_code == 200
...
def test_no_stations(self, db, api_client):
response = api_client.get(reverse('api:stations'))
assert response.data['data'] == []
Когда я запускаю тесты, я получаю:
________________________________ TestClass.test_no_stations________________________________
path/to/test/module.py:11: in test_no_stations
E assert [OrderedDict(...01251d92f')])] == []
E Left contains more items, first extra item: OrderedDict([...])
Если я проверить данные, возвращаемые с помощью отладчика, я вижу, что это станция создана в предыдущем тесте, даже если база данных кажется пустым:
ipdb> response.data['data'][0]['attributes']['name']
foo
ipdb> len(Station.objects.all())
0
Я не знаю, если pytest очищает базу данных или нет между тестами. Я подозревал, что несколько баз данных используются, но у меня есть только одна настройка в моих настройках. Хотя, возможно, есть кеширование, но я прочитал документацию клиента Django и не нашел многого. Что я могу пропустить?