Генерация и выполнение автоматизированных тест-кейсов на базе LangChain
Генерация и выполнение автоматизированных тест-кейсов на базе LangChain

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

На самом деле, этот процесс ручной вставки и выполнения также можно выполнить непосредственно с помощью искусственного интеллекта.

Значение приложения

  • проведение ИИ заменяет часть ручного управления,сэкономить время,Повышайте эффективность.
  • Инкапсулируя больше инструментов, агент становится более интеллектуальным.

Практические упражнения

Принцип реализации
Идеи реализации

Поняв требования, мы можем понять, что нам нужно, чтобы Агент выполнял две функции:

  1. Введите информацию об исходном коде и сгенерируйте файл Python.
  2. Введите имя файла и выполните pytest, чтобы проверить функцию файла.

Таким образом, требования могут быть достигнуты посредством следующих двух шагов:

  1. Упаковка инструментария。
  2. Агент реализации.
Упаковка инструментария

Сделать инструментарий более понятным для больших моделей.,Мы перевели комментарии на английский язык,Улучшите точность. При этом во избежание ошибок формата при передаче параметров,проходитьargs_schemaСтруктура и формат предельных параметров(tools Главы имеют подробные пояснения).

Язык кода:python
кодКоличество запусков:0
копировать
from langchain_core.tools import tool
from pydantic.v1 import BaseModel, Field

class PythonFileInput(BaseModel):
    # Описание параметров определения
    filename: str = Field(description="filename")
    source_code: str = Field(description="source code data")

class PytestFileName(BaseModel):
    # Описание параметров определения
    filename: str = Field(description="The name of the file to be executed")

@tool(args_schema=PythonFileInput)
def write_file(filename, source_code):
    """
    Generate python files based on input source code
    """
    with open(filename, "w") as f:
        f.write(source_code)


@tool(args_schema=PytestFileName)
def execute_test_file(filename):
    """
    Pass in the file name, execute the test case and return the execution result
    """
    import subprocess
    # Выполните команду pytest, используя модуль подпроцесса
    result = subprocess.run(['pytest', filename], capture_output=True, text=True)
    # Проверьте результаты выполнения pytest
    if result.returncode == 0:
        print("Тест пройден успешно!")
    else:
        print("Тестовый запуск не пройден:")
    print(result.stdout)
    return result.stdout
Реализация требований через AGENT
  1. Первый пакет Агент, инструмент привязки, введите слово-подсказку. В примере это LangChain Официально предоставлено structured-chat-agentМодифицированное слово-подсказка на основе слова-подсказки,добавилcodeпеременная。Цель – будущее code может быть сделано другими chain Результат выполнения получается из.
Язык кода:python
кодКоличество запусков:0
копировать
#  Уведомление: Необходимо добавить на основе исходного подсказки слово {code} переменная
# prompt = hub.pull("hwchase17/structured-chat-agent")
llm = ChatOpenAI()

agent1 = create_structured_chat_agent(llm, tools_all, prompt)

agent_executor = AgentExecutor(
    agent=agent1, tools=tools_all,
    verbose=True,
    return_intermediate_steps=True,
    handle_parsing_errors=True)

if __name__ == '__main__':
    agent_executor.invoke({"input": «Пожалуйста, сгенерируйте файлы на основе приведенного выше исходного кода», "code": """def test_demo(): return True"""})

С помощью описанных выше шагов можно создать файл исходного кода:

  1. После создания файла исходного кода вы можете продолжить добавлять слова-подсказки и попросить агента выполнить соответствующие тестовые случаи:
Язык кода:python
кодКоличество запусков:0
копировать
if __name__ == '__main__':
    agent_executor.invoke({"input": """
               Пожалуйста, следуйте инструкциям ниже, чтобы завершить операцию, и я позволю вам завершить операцию. Вы не можете остановиться, пока не будут выполнены все шаги:
                1. Сначала сгенерируйте документ на основе приведенного выше исходного кода.
                2. На основе файла исходного кода, созданного на предыдущем шаге, выполните Выполнение. тестовых случае операции и вернуть окончательный результат выполнения
                """,
               "code": """def test_demo(): return True"""})

здесь, через Agent будет автоматически сгенерированофайл тестового примера,Выполнение тестовых случаевПонятно。

Комбинируйте с другими сценами

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

Уведомление:load_case Как это реализовать, описано в предыдущей главе: «Преобразование ручных тестовых случаев в интерфейс инструмента автоматической генерации тестов на основе LangChain».

Язык кода:python
кодКоличество запусков:0
копировать
# load_case Возвращаемый результат — автоматизированный тестовый пример интерфейса.
chain = (
        RunnablePassthrough.assign(code=load_case) | agent1
)

agent_executor = AgentExecutor(
    agent=chain, tools=tools_all,
    verbose=True,
    return_intermediate_steps=True,
    handle_parsing_errors=True)

if __name__ == '__main__':
    agent_executor.invoke({"input": """
               Пожалуйста, следуйте инструкциям ниже, чтобы завершить операцию, и я позволю вам завершить операцию. Вы не можете остановиться, пока не будут выполнены все шаги:
                1. Сначала сгенерируйте документ на основе приведенного выше исходного кода.
                2. На основе файла исходного кода, созданного на предыдущем шаге, выполните Выполнение. тестовых случае операции и вернуть окончательный результат выполнения
                """})

После выполнения вы можете увидеть запись выполнения сгенерированного теста автоматизации интерфейса на консоли.

Подвести итог

  1. Автоматизированная генерация и выполнение тестовых примеров Принцип реализации。
  2. Идеи реализации для автоматизированной генерации и выполнения тестовых примеров.
  3. Используйте агент для создания и выполнения автоматических тестовых случаев.
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода