8分钟打造一个DeepSeek加持的测试用例工具
北极星学派,公众号:北极星学派 Polaris School8分钟打造一个DeepSeek加持的测试用例工具
ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">8分钟打造一个DeepSeek API智能测试引擎:当咖啡还没凉,测试报告已出炉
北极星学派,公众号:北极星学派 Polaris School8分钟打造一个DeepSeek API智能测试引擎:当咖啡还没凉,测试报告已出炉
ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">2.2 关键技术点说明
defprocess_pdf(uploaded_file):
# PDF分页提取文本
pdf_reader=PyPDF2.PdfReader(filepath)
# 智能分段规则,略简单粗暴
paragraphs=re.split(r'\n\s*\n',text)
# 结构化存储
segments.append({
'segment_id':f"{filename}_{page_num}_{i}",
'document_name':uploaded_file.name,
'page_num':page_num+1,
'content':paragraph
})创新点:
deffind_similar_cases(new_req,df,top_k=3):
# TF-IDF向量化
vectorizer=TfidfVectorizer()
tfidf_matrix=vectorizer.fit_transform(...)
# 余弦相似度计算
similarity=cosine_similarity(tfidf_matrix[-1],tfidf_matrix[:-1])
returntop_indices设计考量:
system_prompt=f"""参考知识:
文档《{item['document']}》第{item['page']}页:{item['content']}
历史用例{idx+1}:{case}
生成要求:
1. JSON数组格式...
"""增强策略:
检索增强生成(Retrieval-Augmented Generation)通过以下流程提升生成质量:
用户问题→知识检索→提示词增强→大模型生成→结果输出
与传统生成的区别:
尽管向量数据库(如ChromaDB)在RAG中广泛应用,但本系统选择TF-IDF+CSV文件存储方案,原因包括:
适合场景:
# 核心依赖
pipinstallstreamlit pandas requests sklearn
# PDF处理
pipinstallPyPDF2 pdfminer.six
# JSON修复
pipinstalljson_repairsk-xxxx格式密钥headers={"Authorization":"Bearersk-xxxx"}# 首次运行自动创建知识库目录
mkdir-p temp
# 启动Web服务
streamlit run testcase_generator.py上传领域文档:
生成增强用例:
需求示例:
用户管理模块,包括用户注册和登陆等
结果导出:
pythonpd.DataFrame(new_cases).to_excel("output.xlsx")# knowledge_segments.csv新增字段
knowledge_df['category']="需求文档"# 需求文档|接口规范|测试报告
knowledge_df['importance']=5 # 1-5分级检索时优先高等级知识片段
fromfunctoolsimportlru_cache
@lru_cache(maxsize=100)
defload_cases():
# 缓存历史用例加载importasyncio
asyncdefasync_generate_cases():
# 非阻塞生成| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |