Size: a a a

Django [ru] #STAY HOME

2020 January 13

MI

Marat Idrísov in Django [ru] #STAY HOME
Rust Saiargaliev
Не очень понятен вопрос, но фраза "при тесте данные также пишутся в основную базу" звучит подозрительно. Тесты должны использовать отдельную бд
Вот я и хочу этого добиться). А данные пишутся в основную базу
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Marat Idrísov
Вот я и хочу этого добиться). А данные пишутся в основную базу
Ну так показывай тест, настройки и все нужное на пасту. Мы не угадаем
источник

♚Inojelis in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
у тебя много лишнего в ней
так почему прием изображений не работает?
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
♚Inojelis
так почему прием изображений не работает?
я тебе ссылку на доку кинул
источник

♚Inojelis in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
я тебе ссылку на доку кинул
щас почитаю.
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
тебе надо было внимательно прочитать и тогда бы ты узнал что на фронте у формы надо определять свойство enctype
источник

MI

Marat Idrísov in Django [ru] #STAY HOME
pytestmark = pytest.mark.django_db

   def test_upload(self, client):
       name = 'test.csv'
       file = dict_to_csv(name, self.data)
       response = client.post('/admin/service/legacy/import-legacy/', data={'csv_file': file, 'delimiter': ','})
       assert response.status_code == 302

Фрагмент теста. Сообственно по api передается файл и с помощью запроса COPY public.service_legacy({header}) FROM STDIN DELIMITER '{self.delimiter}' CSV HEADER; и метода psycopg2.connect.cursor.copy_expert пишется этот самый файл в базу. Но проблема в том, что когда я запускаю тест, эти данные пишутся в основную базу (т.е. я их в админке вижу, а не должен)
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
♚Inojelis
щас почитаю.
на CBV лучше перепиши и поставь login required либо миксин либо декоратор
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Marat Idrísov
pytestmark = pytest.mark.django_db

   def test_upload(self, client):
       name = 'test.csv'
       file = dict_to_csv(name, self.data)
       response = client.post('/admin/service/legacy/import-legacy/', data={'csv_file': file, 'delimiter': ','})
       assert response.status_code == 302

Фрагмент теста. Сообственно по api передается файл и с помощью запроса COPY public.service_legacy({header}) FROM STDIN DELIMITER '{self.delimiter}' CSV HEADER; и метода psycopg2.connect.cursor.copy_expert пишется этот самый файл в базу. Но проблема в том, что когда я запускаю тест, эти данные пишутся в основную базу (т.е. я их в админке вижу, а не должен)
Почему не через TestCase делаешь?
источник

MI

Marat Idrísov in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Почему не через TestCase делаешь?
В проекте так исторически сложилось)
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Marat Idrísov
В проекте так исторически сложилось)
ну вот исторически сторонние кейсы не умеют (или делают это через жопу) работать и создавать тестовую БД(
источник

MI

Marat Idrísov in Django [ru] #STAY HOME
Ну так когда я создаю джанговские объекты create'ом они же пишутся в тестовую базу
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
можно костыль в виде очищения поставить, фильтруешь что насоздавал и удаляешь
источник

MI

Marat Idrísov in Django [ru] #STAY HOME
Костыль - плохо(
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Marat Idrísov
Ну так когда я создаю джанговские объекты create'ом они же пишутся в тестовую базу
в TestCase от джанго
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
Stanley
Доброго! А как в джанге сделать модель с одной записью?
т.е. мне надо например хранить телефон, лого, адресс и т.д.
но мне не надо много записей создавать, только эти поля и все
Если через админку идёт редактирование, то можно в ModelAdmin определить метод has_add_permission
источник

MI

Marat Idrísov in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
в TestCase от джанго
Нет, когда просто тест функция, обычная функция
источник

MI

Marat Idrísov in Django [ru] #STAY HOME
Тест перехватывает запрос и пишет в тестовую базу
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Marat Idrísov
Нет, когда просто тест функция, обычная функция
ну, когда ты её из TestCase вызываешь только
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
ну вот исторически сторонние кейсы не умеют (или делают это через жопу) работать и создавать тестовую БД(
интересно, почему у нас pytest нормально работает с тестовыми базами?
источник