首页 > 其他分享 >基于 LangChain 的自动化测试用例的生成与执行

基于 LangChain 的自动化测试用例的生成与执行

时间:2024-09-27 15:53:43浏览次数:9  
标签:__ code LangChain 生成 测试用例 agent 自动化 True

基于 LangChain 的自动化测试用例的生成与执行_自动化测试

在前面的章节中,分别介绍了 Web、App、接口自动化测试用例的生成。但是在前文中实现的效果均为在控制台打印自动化测试的用例。用例需要手动粘贴,调整之后再执行。

那么其实这个手动粘贴、执行的过程,也是可以直接通过人工智能完成的。

应用价值

  • 通过人工智能代替人工操作的部分,节省时间,提升效率。
  • 通过封装更多的 Tools,让 Agent 更为智能。

实践演练

实现原理

基于 LangChain 的自动化测试用例的生成与执行_自动化测试_02

实现思路

在理解需求之后,我们可以了解到我们需要让 Agent 具备两个功能:

  1. 输入源码信息,生成 python 文件。
  2. 输入文件名,执行 pytest 测试文件功能。

如此,可以通过如下两个步骤实现需求:

  1. 工具包封装。
  2. 实现 Agent。

工具包封装

为了让工具包更易被大模型理解,我们将注释调整为英文,提升准确率。同时为了传参的时候不出现格式错误问题,通过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
    # 使用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、首先封装 Agent,绑定工具,输入提示词。在示例中,是在 LangChain 官方提供的 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"""})

由以上的步骤,即可生成一个源码文件:

基于 LangChain 的自动化测试用例的生成与执行_自动化测试_03

2、在生成源码文件后,可以继续补充提示词,要求Agent 执行对应的测试用例:

if __name__ == '__main__':
    agent_executor.invoke({"input": """
               请根据以下步骤完成我让你完成操作,没有完成所有步骤不能停止:
                1. 先根据以上源码生成文件。
                2. 根据上一步生成的源码文件,进行执行测试用例操作,并返回终的执行结果
                """,
               "code": """def test_demo(): return True"""})

基于 LangChain 的自动化测试用例的生成与执行_测试用例_04

到这里,通过 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. 根据上一步生成的源码文件,进行执行测试用例操作,并返回终的执行结果
                """})

执行之后,即可在控制台看到生成的接口自动化测试用例的执行记录。

基于 LangChain 的自动化测试用例的生成与执行_软件测试_05

总结

  1. 自动化测试用例的生成与执行的实现原理。
  2. 自动化测试用例的生成与执行的实现思路。
  3. 利用 Agent 实现自动化测试用例的生成与执行。

标签:__,code,LangChain,生成,测试用例,agent,自动化,True
From: https://blog.51cto.com/u_16547786/12129759

相关文章

  • 【IEEE出版(有ISBN号)、南京工业大学主办|EI会议|学生易中稿,超高录用率】2024年先进控制
    2024年先进控制系统与自动化技术国际学术会议(ACSAT2024)2024年11月15-17日  中国南京 大会网站:https://ais.cn/u/EvuyUf【投稿参会】截稿时间:以官网信息为准主办单位征稿主题论文出版所录用的论文将以会议论文集形式递交IEEE出版,已确定ISBN号。见刊后由出版......
  • 自动化办公-python中的open()函数
    Python中的open()函数用于打开一个文件,并返回一个文件对象,您可以通过该对象对文件进行读写操作。基本语法:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)参数说明:file:要打开的文件路径(字符串)。可以是......
  • 自动化办公-Python-os模块的使用
    os.path模块的使用在指定文件路径时,由于操作系统的差异,直接使用硬编码的路径可能会导致程序在不同平台上无法正常运行。为了解决这个问题,Python提供了os.path模块,它包含了一系列用于路径操作的函数,可以帮助您以跨平台的方式处理文件路径。为什么要使用os.path模块......
  • 营销自动化全新升级:一键启动,开启企业高效增长之旅!
    营销通营销自动化能力全新升级!!!不仅保留了原有的实时提醒与精准触达功能,更引入了五大自动化SOP分支设置,以全面应对更为复杂的客户培育场景。这一升级大幅提升了营销效率,使您的营销策略更加灵活与高效,助力企业实现业务增长。下面以一家提供高级数据分析服务的B2B公司为例,让我们一起......
  • 【影刀RPA-网页自动化烟草采集】
    工具简介:帮助用户高效地完成重复性的数据采集和信息处理任务。可以模拟人工操作,自动执行网页上的点击、输入和数据提取等动作,从而大幅提高工作效率,减少人为错误。使用场景:1.市场调研:企业可以从多个竞争对手的网站上自动抓取产品信息、价格、促销活动等数据,为市场分析提供依......
  • 激活数据中台:数据飞轮在自动化营销和渠道获客中的应用
    在经历了初步的大数据技术洗礼后,许多企业逐渐认识到,单纯的数据积累并不能直接转化为业务增长的动力。这就引出了一个新的概念——数据飞轮,这一概念不但重新定义了数据的价值提取方式,也给数据中台的战略部署带来了新的生机。尤其是在自动化营销和渠道获客等关键业务场景中,数据飞轮的......
  • URL越权测试用例
    用例描述:检查系统是否做了权限校验。前提条件:    1)系统运行正常。    2)为用户分配不同的权限。   3、测试步骤描述:     1)登录系统,请求系统进行业务处理,并记录请求的URL信息。     2)注销退出系统。     3)使用记录的U......
  • Robot Framework 自动化测试部署常见问题及处理方法(三)
    书接上文8.关于IE浏览器IE浏览器必须是原生版,即Windows系统原版,非手动升级后的版本9.用例执行过程中,遇到元素定位不到的情况原因:⑴xpath动态变化⑵有frame/iframe⑶没有设置等待,元素未加载完成解决方法:⑴若xpath动态变化:重写xpath⑵若有frame/iframe:参照第二节第10点【......
  • ui自动化测试设计思想
    UI自动化测试:自动化测试的目的是提高效率,所以在开始自动化测试之前一定要问自己以下三个问题,尤其第一个是很容易忽视的。一:是否需要自动化测试二:需要采用什么自动化测试方法三:如何开展自动化测试 一:是否需要自动化测试对于是否需要的问题,时候什么需要,当项目属于一直做的项......
  • D18【python接口自动化学习】-python基础之内置数据类型
    day18综合练习:实现手机通讯录(下)学习日期:20240925学习目标:内置数据类型--27小试牛刀:如何使用类型转换实现手机通讯录(下)学习笔记:实现手机通讯录案例文件withopen('27-demo.csv')asf:file_data=f.readlines()print(file_data)#[',张三,同事,13511112222\n......