Skip to content

EgorKolovev/AutoWorker

Repository files navigation


Проект AutoWorker

AutoWorker — это автоматизированный конвейер для обработки, форматирования и тестирования фрагментов кода в различных программных фреймворках. Этот проект автоматизирует генерацию JSON-объектов из входных файлов, обрабатывает тестовые файлы для включения соответствующих фрагментов кода и удаляет дублирующийся код. Это руководство предоставляет исчерпывающее описание проекта, включая информацию о том, как настроить и запустить скрипты через консоль.

Содержание

  1. Требования к установке
  2. Структура директории
  3. Описание скриптов
  4. Инструкции по использованию
  5. Запуск скриптов

Требования к установке

  1. Python: Убедитесь, что у вас установлен Python версии 3.6 или выше. Вы можете скачать его с официального сайта Python.
  2. 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

Скрипт main.py считывает тестовый код и код тестируемого объекта из входного файла, форматирует эти данные и сохраняет их в JSON-файле.

process_test.py

Скрипт process_test.py автоматизирует процесс поиска и добавления сущностей кода, используемых в тестах. Он парсит тестовый код, ищет заданные ключевые слова (имена классов, функции и т.д.) и добавляет соответствующий код из отдельных файлов в выходной файл, избегая дублирования.

pipeline.py

Скрипт pipeline.py управляет выполнением других скриптов (main.py и process_test.py) последовательно.

process_file.py

Скрипт process_file.py извлекает тестовые случаи из файла, записывает их в другой файл и выполняет указанный скрипт конвейера после каждого тестового случая.

stack_imports.py

Скрипт stack_imports.py управляет импортами в проектах на Python, организуя их с помощью стека. Он позволяет добавлять, удалять и возвращать импортируемые сущности, а также просматривать историю изменений, что помогает следить за обработкой множества импортов и предотвращать дублирование и ошибки. Такой подход упрощает управление импортами в больших проектах и улучшает контроль над кодовой базой.

Инструкции по использованию

main.py

Формат входного файла

Создайте файл input.txt в вашей рабочей директории с следующим форматом:

<test_code>
/////
<entity_code>
/////
<framework_name>

Пример содержания input.txt

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 ФАЙЛЫ С ПОДРОБНЫМИ ИНСТРУКЦИЯМИ К КАЖДОМУ ИЗ СКРИПТОВ

Запуск скриптов

Выполняйте каждый скрипт последовательно, как описано в соответствующих разделах. Убедитесь, что указанные в каждом скрипте пути правильны и необходимые файлы существуют по этим путям. Эта настройка автоматизирует процесс извлечения, форматирования и тестирования фрагментов кода эффективно.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages