В предыдущих главах было описано создание автоматизированных тестовых примеров для Интернета, приложений и интерфейсов соответственно. Однако все эффекты, достигнутые в предыдущей статье, используются для печати автоматических тестовых случаев на консоли. Варианты использования необходимо вставлять вручную, а затем выполнять после корректировок.
На самом деле, этот процесс ручной вставки и выполнения также можно выполнить непосредственно с помощью искусственного интеллекта.
Поняв требования, мы можем понять, что нам нужно, чтобы Агент выполнял две функции:
Таким образом, требования могут быть достигнуты посредством следующих двух шагов:
Сделать инструментарий более понятным для больших моделей.,Мы перевели комментарии на английский язык,Улучшите точность. При этом во избежание ошибок формата при передаче параметров,проходитьargs_schema
Структура и формат предельных параметров(tools Главы имеют подробные пояснения).
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
structured-chat-agent
Модифицированное слово-подсказка на основе слова-подсказки,добавилcode
переменная。Цель – будущее code может быть сделано другими chain Результат выполнения получается из.# Уведомление: Необходимо добавить на основе исходного подсказки слово {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"""})
С помощью описанных выше шагов можно создать файл исходного кода:
if __name__ == '__main__':
agent_executor.invoke({"input": """
Пожалуйста, следуйте инструкциям ниже, чтобы завершить операцию, и я позволю вам завершить операцию. Вы не можете остановиться, пока не будут выполнены все шаги:
1. Сначала сгенерируйте документ на основе приведенного выше исходного кода.
2. На основе файла исходного кода, созданного на предыдущем шаге, выполните Выполнение. тестовых случае операции и вернуть окончательный результат выполнения
""",
"code": """def test_demo(): return True"""})
здесь, через Agent будет автоматически сгенерированофайл тестового примера,Выполнение тестовых случаевПонятно。
В предыдущих главах была реализована операция автоматической генерации тест-кейсов автоматизации интерфейса. Ее можно напрямую объединить с предыдущей операцией для автоматического создания тестовых сценариев автоматизации интерфейса и их выполнения.
Уведомление:load_case Как это реализовать, описано в предыдущей главе: «Преобразование ручных тестовых случаев в интерфейс инструмента автоматической генерации тестов на основе LangChain».
# 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. На основе файла исходного кода, созданного на предыдущем шаге, выполните Выполнение. тестовых случае операции и вернуть окончательный результат выполнения
"""})
После выполнения вы можете увидеть запись выполнения сгенерированного теста автоматизации интерфейса на консоли.