基于python實(shí)現(xiàn)智能用例生成工具
工具作用
根據(jù)輸入的功能點(diǎn),生成通用測(cè)試點(diǎn)
實(shí)現(xiàn)步驟
工具實(shí)現(xiàn)主要分2個(gè)步驟:
1.https請(qǐng)求調(diào)用Gpt,將返回響應(yīng)結(jié)果保存為.md文件
2.用python實(shí)現(xiàn) 將 .md文件轉(zhuǎn)換成.xmind文件
3.寫(xiě)個(gè)簡(jiǎn)單的前端頁(yè)面,調(diào)用上述步驟接口
詳細(xì)代碼
1.調(diào)用gpt請(qǐng)求生成 md文件
import os
import requests
import json
"""測(cè)試數(shù)據(jù)路徑管理"""
SCRIPTS_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATAS_DIR = os.path.join(SCRIPTS_DIR, "datas")
Testcase_md= os.path.join(DATAS_DIR,'testcase.md')
"""示例代碼"""
def sendGpt_getmd(content):
# 設(shè)置請(qǐng)求頭中的token
headers = {
"Content-Type": "application/json"
}
# payload= 設(shè)置請(qǐng)求主體中的參數(shù)和數(shù)據(jù),根據(jù)請(qǐng)求的參數(shù)格式傳參即可
payload = {"參數(shù)": "參數(shù)值"}
# 發(fā)送POST請(qǐng)求
response = requests.post("https://xxxxx", headers=headers,
data=json.dumps(payload))
# 解析響應(yīng)結(jié)果
if response.status_code == 200:
result = response.text
print(result)
with open(Testcase_md, "w", encoding="utf-8") as f:
f.write(result)
else:
print("請(qǐng)求失??!")
if __name__ == '__main__':
# 示例用法:keydes為功能標(biāo)題,casecontentTemp為發(fā)送給gpt的模板話術(shù),在使用時(shí)可以將keydes設(shè)置為變量,由前端傳參。另外可以根據(jù)需要修改casecontentTemp內(nèi)容
# 僅包含一級(jí)標(biāo)題,二級(jí)標(biāo)題,無(wú)序列表格式的Markdown形式:該格式不可修改,因?yàn)楹罄m(xù)需要以Markdown格式轉(zhuǎn)換成xmind文件
keydes='上傳附件'
casecontentTemp="僅包含一級(jí)標(biāo)題,二級(jí)標(biāo)題,無(wú)序列表格式的Markdown形式發(fā)送給我。請(qǐng)寫(xiě)出 一級(jí)標(biāo)題為'"+keydes+"'的測(cè)試用例,包含功能測(cè)試(正向/逆向/異常場(chǎng)景),性能測(cè)試,安全測(cè)試,兼容測(cè)試"
sendGpt_getmd(casecontentTemp)2.將md文件轉(zhuǎn)換成xmind文件
通過(guò)步驟1,生成了md文件,以下代碼是將md文件轉(zhuǎn)換成xmind文件
import markdown
from bs4 import BeautifulSoup
import xmind
def md_to_xmind(md_file, xmind_file):
# 讀取MD文件
with open(md_file, 'r', encoding='utf-8') as f:
md = f.read()
# 解析MD文件
html = markdown.markdown(md)
# 創(chuàng)建XMind文件
workbook = xmind.load(xmind_file)
# 獲取根節(jié)點(diǎn)
root_topic = workbook.getPrimarySheet().getRootTopic()
# 遞歸添加節(jié)點(diǎn)
def add_topic(parent_topic, node):
# 添加節(jié)點(diǎn)
topic = parent_topic.addSubTopic()
title = node.get('title', '')
topic.setTitle(title)
# 添加文本
if 'html' in node:
topic.setPlainNotes(node['html'])
# 遞歸添加子節(jié)點(diǎn)
if 'children' in node:
for child in node['children']:
add_topic(topic, child)
# 解析HTML,并添加節(jié)點(diǎn)
soup = BeautifulSoup(html, 'html.parser')
rootmap_node = {'children': []}
root_node = None
current_node = None
for tag in soup.children:
if tag.name == 'h1':
# 創(chuàng)建根節(jié)點(diǎn)
root_node = {'title': tag.string, 'children': []}
current_node = root_node
elif tag.name == 'h2':
new_node = {'title': tag.string, 'children': []}
root_node['children'].append(new_node)
current_node = new_node
elif tag.name == 'p':
current_node['html'] = str(tag)
elif tag.name == 'ul':
for li in tag.children:
text = li.text.strip()
if len(text) > 0:
li_node = {'title': text, 'children': []}
current_node['children'].append(li_node)
elif tag.name == 'ol':
for li in tag.children:
text = li.text.strip()
if len(text) > 0:
li_node = {'title': text, 'children': []}
current_node['children'].append(li_node)
# 添加節(jié)點(diǎn)
for node in root_node['children']:
add_topic(root_topic, node)
# 修改根節(jié)點(diǎn)的名稱(chēng)
root_topic.setTitle(root_node['title'])
# 保存XMind文件
xmind.save(workbook, xmind_file)
if __name__ == '__main__':
# 示例用法 example.md為步驟1生成的文件,通過(guò)md_to_xmind方法調(diào)用將.md文件轉(zhuǎn)換成xmind文件
md_to_xmind('example.md', 'example.xmind')
3.合并步驟1,2后運(yùn)行
import os
from scripts.datas.mdtoxmind import md_to_xmind
from scripts.datas.sendGpt import sendGpt_getmd
"""測(cè)試數(shù)據(jù)路徑管理"""
SCRIPTS_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATAS_DIR = os.path.join(SCRIPTS_DIR, "datas")
Testcase_md= os.path.join(DATAS_DIR,'testcase.md')
Testcase_xmind= os.path.join(DATAS_DIR,'testcase.xmind')
def oneTocase(keydes):
casecontentTemp="僅包含一級(jí)標(biāo)題,二級(jí)標(biāo)題,無(wú)序列表格式的Markdown形式發(fā)送給我。請(qǐng)寫(xiě)出 一級(jí)標(biāo)題為'"+keydes+"'的測(cè)試用例,包含功能測(cè)試(正向/逆向/異常場(chǎng)景),性能測(cè)試,安全測(cè)試,兼容測(cè)試"
sendGpt_getmd(casecontentTemp)
md_to_xmind(Testcase_md, Testcase_xmind)
if __name__ == '__main__':
# 示例用法
keydes='上傳附件'
oneTocase(keydes)運(yùn)行后結(jié)果:
生成對(duì)應(yīng)文件

打開(kāi)后查看如下內(nèi)容

后期集成測(cè)試工具構(gòu)思
1.將詳細(xì)代碼中步驟3暴露出rest接口,供前端調(diào)用
2.前端頁(yè)面可提供出形成 通用工具
到此這篇關(guān)于基于python實(shí)現(xiàn)智能用例生成工具的文章就介紹到這了,更多相關(guān)python智能生成工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python快速實(shí)現(xiàn)一個(gè)線程池的示例代碼
當(dāng)有多個(gè)?IO?密集型的任務(wù)要被處理時(shí),我們自然而然會(huì)想到多線程。而線程池的實(shí)現(xiàn)也很簡(jiǎn)單,因?yàn)?Python?提供了一個(gè)標(biāo)準(zhǔn)庫(kù)?concurrent.futures,已經(jīng)內(nèi)置了對(duì)線程池的支持。所以本篇文章,我們就來(lái)詳細(xì)介紹一下該模塊的用法2022-07-07
Django自帶的用戶(hù)驗(yàn)證系統(tǒng)實(shí)現(xiàn)
這篇文章主要介紹了Django自帶的用戶(hù)驗(yàn)證系統(tǒng)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python+PyQT5實(shí)現(xiàn)手繪圖片生成器
這篇文章主要介紹了利用Python PyQT5制作一個(gè)手繪圖片生成器,可以將導(dǎo)入的彩色圖片通過(guò)python分析光源、灰度等操作生成手繪圖片。感興趣的可以跟隨小編一起了解一下2022-02-02
Python實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成功能
聲音的本質(zhì)是震動(dòng),震動(dòng)的本質(zhì)是位移關(guān)于時(shí)間的函數(shù),波形文件(.wav)中記錄了不同采樣時(shí)刻的位移。這篇文章主要介紹了Python實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成,需要的朋友可以參考下2019-09-09
Python中的Logging模塊在項(xiàng)目應(yīng)用小結(jié)
Python標(biāo)準(zhǔn)庫(kù)中的logging模塊為我們提供了強(qiáng)大而靈活的日志記錄功能,本文將介紹如何使用logging模塊,并探討其在Python開(kāi)發(fā)中的實(shí)際應(yīng)用,感興趣的朋友一起看看吧2024-04-04
使用Pytorch+PyG實(shí)現(xiàn)MLP的詳細(xì)過(guò)程
圖神經(jīng)網(wǎng)絡(luò)是最近 AI 領(lǐng)域最熱門(mén)的方向之一,下面這篇文章主要給大家介紹了關(guān)于使用Pytorch+PyG實(shí)現(xiàn)MLP的詳細(xì)過(guò)程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03

