俗话说:“学习一门技术语言最好的方式还是多敲多练多实践”。可有童鞋反馈说,看过了那么多AI相关的文章可依旧不知道该如何实践,就像听了那么多道理,可最终还是“道理是道理,我是我”。今天,我们就从大家熟知的 DeepSeek和AI应用框架“ LangChain”的组合使用角度,带领大家一起来实践它们的应用场景!

用LangChain生成测试用例的应用,大家可以看之前京东团队的实践(《 大厂测试人亲测:大模型自动生成测试用例,效率飙升50%!》),效果也非常不错!

graph T
A[DeepSeek] -->|认知智能层| B(自然语言理解)
A -->|生成层| C(测试逻辑生成)
D[LangChain] -->|应用框架层| E(组件编排)
D -->|工具集成层| F(外部系统对接)
B & C --> G{协同接口}
E & F --> G
G --> H[智能测试应用# 创建虚拟环境 python -m venv test-ai source test-ai/bin/activate # Linux/Mac # test-ai\Scripts\activate # Windows # 安装核心库 pip install langchain langchain-core deepseek-api selenium pandas pytes
import os
from getpass import getpass
os.environ["DEEPSEEK_API_KEY"] = getpass("输入DeepSeek API密钥:"graph TD
A[测试需求] --> B(LangChain流程编排)
B --> C{决策节点}
C -->|生成类任务| D[DeepSeek模型]
C -->|执行类任务| E[Selenium/Requests]
D --> F[结构化输出解析]
E --> G[测试结果收集]
G --> H[DeepSeek分析]
H --> I[自动优化流程from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from deepseek import DeepSeek
class TestCaseGenerator:
def __init__(self):
self.llm = DeepSeek(temperature=0.7)
self.prompt = PromptTemplate(
input_variables=["requirement"],
template="""将以下需求转换为Gherkin格式测试用例:
{requirement}
输出格式:
功能: [功能名称]
场景: [场景描述]
当[条件]
且[条件]
那么[结果]"""
)
self.chain = LLMChain(llm=self.llm, prompt=self.prompt)
def generate(self, requirement):
return self.chain.invoke({"requirement": requirement})['text']
# 使用示例
generator = TestCaseGenerator()
print(generator.generate("用户登录功能需验证手机号格式和验证码有效期")功能: 用户登录验证 场景: 验证手机号格式有效性 当 用户输入手机号"1381234567" 且 点击登录按钮 那么 系统应提示"手机号格式不正确" 场景: 验证验证码过期处理 当 用户输入正确验证码 且 验证码已超过5分钟 那么 系统应要求重新获取验证
from langchain.schema import HumanMessage
from selenium import webdriver
class ScriptGenerator:
def __init__(self):
self.llm = DeepSeek(temperature=0)
def generate_script(self, instruction):
prompt = f"""将操作指令转换为Python selenium代码:
{instruction}
只输出代码,使用chrome驱动"""
response = self.llm.invoke(prompt)
return self._sanitize_code(response.content)
def _sanitize_code(self, text):
return text.split("```python")[1].split("```")[0]
# 执行示例
driver = webdriver.Chrome()
gen = ScriptGenerator()
code = gen.generate_script("打开百度首页,搜索'LangChain测试',验证结果包含'教程'")
exec(code) # 实际生产环境应使用AST安全执from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver.get("https://www.baidu.com")
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("LangChain测试")search_box.send_keys(Keys.RETURN)
assert "教程" in driver.find_element(By.TAG_NAME, "body").teximport pandas as pd
from langchain.chains import TransformChain
class LogAnalyzer:
def __init__(self):
self.llm = DeepSeek()
def analyze(self, log_path):
logs = pd.read_csv(log_path, sep="|", names=["timestamp", "level", "message"])
critical_logs = logs[logs["level"] == "ERROR"]
analysis_chain = TransformChain(
transform_func=self._analyze_logs,
input_variables=["logs"],
output_variables=["report"]
)
return analysis_chain.invoke({"logs": critical_logs.to_dict()})
def _analyze_logs(self, inputs):
prompt = """分析以下错误日志,找出根本原因:
{logs}
按以下格式输出:
1. 主要异常类型
2. 高频错误关键词
3. 修复建议"""
return {"report": self.llm.invoke(prompt.format(logs=inputs["logs"]))}
# 使用示例
analyzer = LogAnalyzer()
print(analyzer.analyze("app.log")["report"]1. 主要异常类型:数据库连接超时 2. 高频关键词:ConnectionTimeout、ECONNREFUSED 3. 建议: - 检查数据库服务状态 - 增加连接重试机制 - 调整连接池配
import json
from langchain.output_parsers import StructuredOutputParser
class AssertionGenerator:
def __init__(self):
self.llm = DeepSeek()
self.parser = StructuredOutputParser.from_response_schemas([
{"name": "assert_type", "type": "string"},
{"name": "expected_value", "type": "string"},
{"name": "condition", "type": "string"}
])
def generate_assertion(self, response_data):
prompt = f"""根据API响应生成验证断言:
{json.dumps(response_data)}
输出格式:
{self.parser.get_format_instructions()}"""
output = self.llm.invoke(prompt)
return self.parser.parse(output.content)
# 测试示例
generator = AssertionGenerator()
print(generator.generate_assertion({
"status": "success",
"data": {"user_id": 123, "balance": 150.5}
}){
"assert_type": "数值范围验证",
"expected_value": "balance > 100",
"condition": "用户余额应满足最低要求"
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70034708/viewspace-3080240/ ,如需转载,请注明出处,否则将追究法律责任。