AutoWorker — это автоматизированный конвейер для обработки, форматирования и тестирования фрагментов кода в различных программных фреймворках. Этот проект автоматизирует генерацию JSON-объектов из входных файлов, обрабатывает тестовые файлы для включения соответствующих фрагментов кода и удаляет дублирующийся код. Это руководство предоставляет исчерпывающее описание проекта, включая информацию о том, как настроить и запустить скрипты через консоль.
- Требования к установке
- Структура директории
- Описание скриптов
- Инструкции по использованию
- Запуск скриптов
- Python: Убедитесь, что у вас установлен Python версии 3.6 или выше. Вы можете скачать его с официального сайта Python.
- IDE или текстовый редактор: Рекомендуется использовать IDE, например, VSCode или PyCharm для удобства работы.
Настройте вашу проектную директорию следующим образом:
project/
├── code_directory/
│ ├── MyClass.txt
│ ├── my_function.txt
│ └── my_variable.txt
├── input.txt
├── main.py
├── process_test.py
├── pipeline.py
├── process_file.py
├── stack_imports.py
└── test_file.pyСкрипт main.py считывает тестовый код и код тестируемого объекта из входного файла, форматирует эти данные и сохраняет их в JSON-файле.
Скрипт process_test.py автоматизирует процесс поиска и добавления сущностей кода, используемых в тестах. Он парсит тестовый код, ищет заданные ключевые слова (имена классов, функции и т.д.) и добавляет соответствующий код из отдельных файлов в выходной файл, избегая дублирования.
Скрипт pipeline.py управляет выполнением других скриптов (main.py и process_test.py) последовательно.
Скрипт process_file.py извлекает тестовые случаи из файла, записывает их в другой файл и выполняет указанный скрипт конвейера после каждого тестового случая.
Скрипт stack_imports.py управляет импортами в проектах на Python, организуя их с помощью стека. Он позволяет добавлять, удалять и возвращать импортируемые сущности, а также просматривать историю изменений, что помогает следить за обработкой множества импортов и предотвращать дублирование и ошибки. Такой подход упрощает управление импортами в больших проектах и улучшает контроль над кодовой базой.
Создайте файл input.txt в вашей рабочей директории с следующим форматом:
<test_code>
/////
<entity_code>
/////
<framework_name>def test_create_item(client: TestClient, superuser_token_headers: dict[str, str]) -> None:
data = {"title": "Foo", "description": "Fighters"}
response = client.post(f"{settings.API_V1_STR}/items/", headers=superuser_token_headers, json=data)
assert response.status_code == 200
content = response.json()
assert content["title"] == data["title"]
assert content["description"] == data["description"]
assert "id" in content
assert "owner_id" in content
/////
@router.post("/", response_model=ItemPublic)
def create_item(*, session: SessionDep, current_user: CurrentUser, item_in: ItemCreate) -> Any:
item = Item.model_validate(item_in, update={"owner_id": current_user.id})
session.add(item)
session.commit()
session.refresh(item)
return item
/////
pytest###В ПРОЕКТЕ ЛЕЖАТ .md ФАЙЛЫ С ПОДРОБНЫМИ ИНСТРУКЦИЯМИ К КАЖДОМУ ИЗ СКРИПТОВ
Выполняйте каждый скрипт последовательно, как описано в соответствующих разделах. Убедитесь, что указанные в каждом скрипте пути правильны и необходимые файлы существуют по этим путям. Эта настройка автоматизирует процесс извлечения, форматирования и тестирования фрагментов кода эффективно.