Files
octopus/ПОЛЕЗНЫЕ ТЕСТЫ/RECOMMERCE/test_is_special.py
Andrey Smakotin 7fd361aaf8 docs(products): обновить описание синхронизации флагов
Уточнена инструкция в модалке: акцент на выборе флагов для
синхронизации, а не на изменении значений.
Удалены временные скрипты отладки API.
2026-01-13 22:55:12 +03:00

149 lines
5.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Тестовый скрипт для отладки флага is_special в Recommerce API
Без Django - напрямую через requests
"""
import requests
# === НАСТРОЙКИ - ЗАПОЛНИ ===
STORE_URL = "https://mixflowers.by" # Замени на свой URL
API_TOKEN = "baac4380c190c4c3fed7a89977fd6155b846c7e8" # Замени на свой токен
# ===========================
SKU = "re-3560"
def get_headers():
return {
'x-auth-token': API_TOKEN,
'Accept': 'application/json',
}
def get_product():
"""Получить товар и показать текущие флаги"""
print(f"\n=== GET товар {SKU} ===")
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
try:
resp = requests.get(url, headers=get_headers(), timeout=15)
print(f"Status: {resp.status_code}")
if resp.status_code == 200:
result = resp.json()
# Показываем интересующие поля
if 'marks' in result:
print(f" marks: {result['marks']}")
if 'is_special' in result:
print(f" is_special: {result['is_special']}")
if 'price' in result:
print(f" price: {result['price']}")
if 'price_old' in result:
print(f" price_old: {result['price_old']}")
print(f"\nПолный ответ: {result}")
return result
else:
print(f"Ошибка: {resp.text}")
except Exception as e:
print(f"Ошибка: {e}")
return None
def update_product(data):
"""Обновить товар"""
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
print(f"POST {url}")
print(f"Data: {data}")
try:
resp = requests.post(url, headers=get_headers(), data=data, timeout=15)
print(f"Status: {resp.status_code}")
print(f"Response: {resp.text[:500] if resp.text else 'empty'}")
return resp
except Exception as e:
print(f"Ошибка: {e}")
return None
def test_is_special_string():
"""Тест: is_special как строка 'true'"""
print(f"\n=== TEST: is_special='true' (строка) ===")
update_product({'is_special': 'true'})
def test_is_special_bool():
"""Тест: is_special как boolean True"""
print(f"\n=== TEST: is_special=True (будет отправлено как 'True') ===")
update_product({'is_special': True})
def test_is_special_int():
"""Тест: is_special как int 1"""
print(f"\n=== TEST: is_special=1 (int) ===")
update_product({'is_special': 1})
def test_marks_special():
"""Тест: marks[special] вместо is_special"""
print(f"\n=== TEST: marks[special]='true' ===")
update_product({'marks[special]': 'true'})
def test_reset_special():
"""Сброс is_special в false"""
print(f"\n=== RESET: is_special='false' ===")
update_product({'is_special': 'false'})
def test_special_1():
"""Тест: special=1 (как в админке!)"""
print(f"\n=== TEST: special=1 (формат админки) ===")
update_product({'special': 1})
def test_special_0():
"""Сброс: special=0"""
print(f"\n=== RESET: special=0 ===")
update_product({'special': 0})
if __name__ == "__main__":
if "your-store" in STORE_URL or "your-api" in API_TOKEN:
print("=" * 50)
print("ОШИБКА: Заполни STORE_URL и API_TOKEN в скрипте!")
print("Открой test_is_special.py и замени значения")
print("=" * 50)
exit(1)
print("=" * 50)
print("Тестирование флага is_special для Recommerce API")
print(f"Store: {STORE_URL}")
print(f"SKU: {SKU}")
print("=" * 50)
# Сначала смотрим текущее состояние
get_product()
print("\n" + "=" * 50)
print("Выберите тест:")
print("1 - GET (показать текущее состояние)")
print("2 - is_special='true' (строка)")
print("3 - is_special=True (bool)")
print("4 - is_special=1 (int)")
print("5 - marks[special]='true'")
print("6 - Сброс is_special='false'")
print("7 - special=1 (ФОРМАТ АДМИНКИ!)")
print("8 - special=0 (сброс)")
print("0 - Выход")
print("=" * 50)
while True:
choice = input("\nВведите номер теста: ").strip()
if choice == "0":
break
elif choice == "1":
get_product()
elif choice == "2":
test_is_special_string()
elif choice == "3":
test_is_special_bool()
elif choice == "4":
test_is_special_int()
elif choice == "5":
test_marks_special()
elif choice == "6":
test_reset_special()
elif choice == "7":
test_special_1()
elif choice == "8":
test_special_0()
else:
print("Неверный выбор")