Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

构建Testlink MCP并集成到Copilot(一)



现在已经完成了从需求分析->自动生成用例->自动生成脚本的过程,全部通过预定义的prompts和instructions让Copilot来完成的, 几乎不需要人为干涉了。

在这个流程中,增加了testlink的mcp server。因为testlink是个比较老的产品了,没有官方的mcp,于是根据公司内部需求自己给做了一个。testlink mcp在这个自动生成的流程中的作用是:分析需求后生成的测试用例直接保存在testlink与成员共享,直接获取testlink的新老case来生成自动化脚本。至于自动运行、自动分析错误、自动上线那是之后的事情了。

这里会以testlink部分功能为例介绍如何构建一个简易的mcp server。

--------

正式开始。

选择使用python3.12,基于FastMCP来构建,部署到服务器上用的uvicorn和nginx。对于testlink,因为还在用1.9.20的版本,一个比较老的testlink-api-python-client还能用上。

安装uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

添加项目依赖:

uv add fastmcp testlink-api-python-client
uv sync

此时,项目根目录会新建一个.venv的目录,包含了需要的python包,可以直接激活这个虚拟环境。

为了能与testlink交互,需要先获取testlink的api key,代表登陆人身份。

登陆testlink后,在主页左上角点击my settings的图标

进入设置页面,如果从来没有生成过api key的话,需要点击'generate a new key', 已有的话直接复制key的值。

接下来先加一个在copilot里用提示词查询testlink版本的简单方法。

新增一个testlink的帮助类,utils/testlink_util.py,只用于获取链接。

import testlink


class TestLinkUtils:

    def __init__(self):
        self.url = "http://testlink_server_url/lib/api/xmlrpc/v1/xmlrpc.php"
        self.key = "testlink_api_key"  # 后面这里会传递参数进来
        self._client = None

    def get_client(self):
        if self._client is None:
            self._client = testlink.TestlinkAPIClient(self.url, self.key)
        return self._client

在根目录新建一个server.py

from fastmcp import FastMCP
from utils.testlink_utils import TestLinkUtils


app = FastMCP("TESTLINK MCP Server")


@app.tool()
def get_version() -> dict:
    """Retrieves version of testlink."""
    try:
        tl = TestLinkUtils().get_client()
        version = tl.testLinkVersion()
        return {"testlink_version": version}
    except Exception as e:
        return {"error": f"Failed to get TestLink version: {str(e)}"}


if __name__ == "__main__":
    app.run(transport="http", port=8000)

 

上一篇:  Playwright与Selenium对比区别

共有0条评论

添加评论

暂无评论