本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種測試用例文件生成方法及裝置。
背景技術(shù):
在進(jìn)行設(shè)備的接口測試和性能測試時,其核心步驟是準(zhǔn)備測試用例,不同場景和測試點(diǎn)對應(yīng)的測試用例均不同。
尤其對于私有協(xié)議來說,當(dāng)需要對私有協(xié)議接口進(jìn)行接口或性能測試時,除了分析測試點(diǎn)和測試場景、編寫測試用例和準(zhǔn)備測試數(shù)據(jù)、提取該接口的輸入條件和輸出期望值外,還需要將這些測試用例和數(shù)據(jù)轉(zhuǎn)化為可被測試框架識別的形式,即各接口的私有協(xié)議可識別的測試用例。而這部分轉(zhuǎn)化工作就需要通過手工的方式,按測試框架對測試用例的設(shè)定,手工對測試用例進(jìn)行編寫和配置。如果需要準(zhǔn)備多條測試數(shù)據(jù)的測試用例時,需要手動配置每條測試數(shù)據(jù)對應(yīng)的測試用例,尤其是進(jìn)行性能測試時需要配置的數(shù)據(jù)量非常大,用手工方式難以完成。
在實(shí)現(xiàn)本發(fā)明實(shí)施例的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有的手工配置測試用例的方法雖然簡單、門檻低,但效率非常低,且容易出錯。
技術(shù)實(shí)現(xiàn)要素:
由于現(xiàn)有的手工配置測試用例的方法雖然簡單、門檻低,但效率非常低,且容易出錯的問題,本發(fā)明實(shí)施例提出一種測試用例文件生成方法及裝置。
第一方面,本發(fā)明實(shí)施例提出一種測試用例文件生成方法,包括:
運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中;
運(yùn)行腳本文件中的第二腳本,根據(jù)所述第二腳本讀取數(shù)據(jù)文件,判斷所述數(shù)據(jù)文件中是否存在所述第一預(yù)設(shè)字符串;
若所述數(shù)據(jù)文件中存在所述第一預(yù)設(shè)字符串,則讀取所述數(shù)據(jù)文件的目標(biāo)行中所述第一預(yù)設(shè)字符串對應(yīng)的目標(biāo)字符串,并將所述測試用例文件中的所述第一預(yù)設(shè)字符串替換為所述目標(biāo)字符串。
可選地,所述運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中之前,還包括:
運(yùn)行腳本文件中的第三腳本,根據(jù)所述第三腳本接收外部輸入的輸入字符串,將頭部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中,并讀取所述頭部模板文件中的第二預(yù)設(shè)字符串;
將所述測試用例文件中的所述第二預(yù)設(shè)字符串替換為所述輸入字符串。
可選地,所述若所述數(shù)據(jù)文件中存在所述第一預(yù)設(shè)字符串,則讀取所述數(shù)據(jù)文件的目標(biāo)行中所述第一預(yù)設(shè)字符串對應(yīng)的目標(biāo)字符串,并將所述測試用例文件中的所述第一預(yù)設(shè)字符串替換為所述目標(biāo)字符串之后,還包括:
判斷所述目標(biāo)行是否為所述數(shù)據(jù)文件的最后一行;
若所述目標(biāo)行為所述數(shù)據(jù)文件的最后一行,則運(yùn)行腳本文件中的第四腳本,并根據(jù)所述第四腳本將尾部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中。
可選地,所述運(yùn)行腳本文件中的第四腳本,根據(jù)所述第四腳本將尾部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中之后,還包括:
根據(jù)所述測試用例文件中的測試用例,自動對各接口的私有協(xié)議進(jìn)行測試。
可選地,所述運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中之前,還包括:
獲取預(yù)設(shè)的所述腳本文件、所述中部模板文件、所述頭部模板文件和所述尾部模板文件,并根據(jù)測試要求確定所述數(shù)據(jù)文件。
可選地,所述方法還包括:
若所述數(shù)據(jù)文件中不存在所述預(yù)設(shè)字符串,則生成錯誤提示信息。
可選地,所述第一預(yù)設(shè)字符串和/或所述第二預(yù)設(shè)字符串的第一、第二、倒數(shù)第一和倒數(shù)第二個字符均為下劃線。
可選地,所述數(shù)據(jù)文件的首行存儲所述第一預(yù)設(shè)字符串。
可選地,所述中部模板文件為任意一個接口協(xié)議的模板文件,每個接口協(xié)議的模板文件包括對應(yīng)接口協(xié)議的測試程序。
第二方面,本發(fā)明實(shí)施例還提出一種測試用例文件生成裝置,包括:
中部數(shù)據(jù)拷貝模塊,用于運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中;
字符串判斷模塊,用于運(yùn)行腳本文件中的第二腳本,根據(jù)所述第二腳本讀取數(shù)據(jù)文件,判斷所述數(shù)據(jù)文件中是否存在所述第一預(yù)設(shè)字符串;
第一字符串替換模塊,用于若所述數(shù)據(jù)文件中存在所述第一預(yù)設(shè)字符串,則讀取所述數(shù)據(jù)文件的目標(biāo)行中所述第一預(yù)設(shè)字符串對應(yīng)的目標(biāo)字符串,并將所述測試用例文件中的所述第一預(yù)設(shè)字符串替換為所述目標(biāo)字符串。
可選地,所述裝置還包括:
頭部數(shù)據(jù)拷貝模塊,用于運(yùn)行腳本文件中的第三腳本,根據(jù)所述第三腳本接收外部輸入的輸入字符串,將頭部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中,并讀取所述頭部模板文件中的第二預(yù)設(shè)字符串;
第二字符串替換模塊,用于將所述測試用例文件中的所述第二預(yù)設(shè)字符串替換為所述輸入字符串。
可選地,所述裝置還包括:
目標(biāo)行判斷模塊,用于判斷所述目標(biāo)行是否為所述數(shù)據(jù)文件的最后一行;
尾部數(shù)據(jù)拷貝模塊,用于若所述目標(biāo)行為所述數(shù)據(jù)文件的最后一行,則運(yùn)行腳本文件中的第四腳本,并根據(jù)所述第四腳本將尾部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中。
可選地,所述裝置還包括:
私有協(xié)議測試模塊,用于根據(jù)所述測試用例文件中的測試用例,自動對各接口的私有協(xié)議進(jìn)行測試。
可選地,所述裝置還包括:
文件獲取模塊,用于獲取預(yù)設(shè)的所述腳本文件、所述中部模板文件、所述頭部模板文件和所述尾部模板文件,并根據(jù)測試要求確定所述數(shù)據(jù)文件。
可選地,所述裝置還包括:
錯誤提示模塊,用于若所述數(shù)據(jù)文件中不存在所述預(yù)設(shè)字符串,則生成錯誤提示信息。
可選地,所述第一預(yù)設(shè)字符串和/或所述第二預(yù)設(shè)字符串的第一、第二、倒數(shù)第一和倒數(shù)第二均為下劃線。
可選地,所述數(shù)據(jù)文件的首行存儲所述第一預(yù)設(shè)字符串。
可選地,所述中部模板文件為任意一個接口協(xié)議的模板文件,每個接口協(xié)議的模板文件包括對應(yīng)接口協(xié)議的測試程序。
第三方面,本發(fā)明實(shí)施例還提出一種電子設(shè)備,包括:
至少一個處理器;以及
與所述處理器通信連接的至少一個存儲器,其中:
所述存儲器存儲有可被所述處理器執(zhí)行的程序指令,所述處理器調(diào)用所述程序指令能夠執(zhí)行上述方法權(quán)利要求所述的方法。
第四方面,本發(fā)明實(shí)施例還提出一種非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì),所述非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì)存儲計(jì)算機(jī)程序,所述計(jì)算機(jī)程序使所述計(jì)算機(jī)執(zhí)行上述方法權(quán)利要求所述的方法。
由上述技術(shù)方案可知,本發(fā)明實(shí)施例通過腳本文件,將最耗時的手工配置部分用腳本來實(shí)現(xiàn),大大提高效率;通過將數(shù)據(jù)與模板內(nèi)容從腳本中獨(dú)立出來,分別形成數(shù)據(jù)文件和中部模板文件,能夠針對不同的接口測試,直接選擇對應(yīng)的中部模板文件;通過第一預(yù)設(shè)字符串連接數(shù)據(jù)文件和中部模板文件,能夠快速地自動生成測試用例文件,無需人工干預(yù)腳本的編寫,效率高且不易出錯。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些圖獲得其他的附圖。
圖1為本發(fā)明一實(shí)施例提供的一種測試用例文件生成方法的流程示意圖;
圖2為本發(fā)明一實(shí)施例提供的數(shù)據(jù)文件的示意圖;
圖3為本發(fā)明另一實(shí)施例提供的一種測試用例文件生成方法的流程示意圖;
圖4為本發(fā)明一實(shí)施例提供的一種測試用例文件生成裝置的結(jié)構(gòu)示意圖;
圖5為本發(fā)明一個實(shí)施例提供的電子設(shè)備的邏輯框圖。
具體實(shí)施方式
下面結(jié)合附圖,對本發(fā)明的具體實(shí)施方式作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,而不能以此來限制本發(fā)明的保護(hù)范圍。
圖1示出了本實(shí)施例提供的一種測試用例文件生成方法的流程示意圖,包括:
s101、運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中。
其中,所述腳本文件中包括多個執(zhí)行不同操作的腳本,例如第一腳本、第二腳本、第三腳本和第四腳本。
所述第一腳本用于讀取中部模板文件中的第一預(yù)設(shè)字符串。
所述第二腳本用于讀取數(shù)據(jù)文件,并判斷所述數(shù)據(jù)文件中是否存在所述第一預(yù)設(shè)字符串。
所述第三腳本用于接收外部輸入的輸入字符串,將頭部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中,并讀取所述頭部模板文件中的第二預(yù)設(shè)字符串。
所述第四腳本用于將尾部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中。
模板文件用于存儲各接口均可適用的模板化的測試程序,一個測試用例中的測試程序包括頭部、中部和尾部,頭部包含了用例名稱、登錄用戶名和數(shù)據(jù)文件名稱等,尾部的內(nèi)容只有括號,中部的內(nèi)容是主體,包含了一個協(xié)議的標(biāo)識、輸入和預(yù)期結(jié)果等。
針對一個接口中的每一條測試協(xié)議,將上述提到的頭部、中部和尾部保存成單獨(dú)的json文件,并將其中需要被填充測試數(shù)據(jù)的部分用不與其它字符串重復(fù)的特制字符串(第一預(yù)設(shè)字符串)代替,這些json文件就是模板文件。
因此,模板文件包括頭部模板文件、中部模板文件和尾部模板文件。
所述頭部模板文件和所述尾部模板文件中的內(nèi)容在最終生成的測試用例文件中只出現(xiàn)一次,但是所述中部模板文件中的內(nèi)容在最終生成的測試用例文件中會出現(xiàn)多次,每一條測試數(shù)據(jù)對應(yīng)一份中部模板文件中的內(nèi)容。因此,如果數(shù)據(jù)文件中包括n條測試數(shù)據(jù),則中部模板文件中的內(nèi)容在最終生成的測試用例文件中會出現(xiàn)n次。
所述測試用例文件是存儲測試用例的文件,該文件中的測試用例用于最終進(jìn)行接口測試。
所述測試用例是各接口的私有協(xié)議中的接口的基本執(zhí)行實(shí)體,包括執(zhí)行命令序列和其他屬性信息。其中,命令是最小執(zhí)行單位,包括命令標(biāo)識、依賴信息、執(zhí)行此命令的用戶、輸入?yún)?shù)和期望輸出參數(shù)等。
所述第一預(yù)設(shè)字符串為中部模板文件中預(yù)先定義的表示實(shí)際測試數(shù)據(jù)的字符串,例如“__resourceid__”表示資源序號,在實(shí)際執(zhí)行測試用例時,中部模板文件中出現(xiàn)“__resourceid__”的地方都將用數(shù)據(jù)文件中實(shí)際的測試數(shù)據(jù)進(jìn)行替代。如果有3條測試數(shù)據(jù),則中部模板文件的內(nèi)容在最終生成的測試用例文件中出現(xiàn)3次,第1次中部模板文件中出現(xiàn)“__resourceid__”的地方都用第1條資源序號的測試數(shù)據(jù)替代,第2次中部模板文件中出現(xiàn)“__resourceid__”的地方都用第2條資源序號的測試數(shù)據(jù)替代,第3次中部模板文件中出現(xiàn)“__resourceid__”的地方都用第3條資源序號的測試數(shù)據(jù)替代。
s102、運(yùn)行腳本文件中的第二腳本,根據(jù)所述第二腳本讀取數(shù)據(jù)文件,判斷所述數(shù)據(jù)文件中是否存在所述第一預(yù)設(shè)字符串。
其中,所述數(shù)據(jù)文件為根據(jù)測試要求需要的測試數(shù)據(jù),預(yù)先確定的文件。數(shù)據(jù)文件中存儲了多條測試數(shù)據(jù),每條測試數(shù)據(jù)可以包括一項(xiàng)測試參數(shù),也可以包括多項(xiàng)測試參數(shù)。
具體地,可以通過順序查找的方式,在數(shù)據(jù)文件中查找所述第一預(yù)設(shè)字符串。
s103、若所述數(shù)據(jù)文件中存在所述第一預(yù)設(shè)字符串,則讀取所述數(shù)據(jù)文件的目標(biāo)行中所述第一預(yù)設(shè)字符串對應(yīng)的目標(biāo)字符串,并將所述測試用例文件中的所述第一預(yù)設(shè)字符串替換為所述目標(biāo)字符串。
其中,所述目標(biāo)行可以為數(shù)據(jù)文件中的任意一行。本實(shí)施例可以采用順序讀取的方式,每次讀取一行測試數(shù)據(jù),直到數(shù)據(jù)文件的最后一行。
所述目標(biāo)字符串為目標(biāo)行的測試數(shù)據(jù)中與第一預(yù)設(shè)字符串對應(yīng)的字符串。
舉例來說,如圖2所示,所述第一預(yù)設(shè)字符串為“__resourceid__”,表示資源序號,在數(shù)據(jù)文件中存儲了一張數(shù)據(jù)表,該數(shù)據(jù)表中除了“__resourceid__”,還包括“__filename__”(文件名稱)和“__mimetype__”(多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型),該數(shù)據(jù)文件中首行存儲了測試數(shù)據(jù)的屬性(第一預(yù)設(shè)字符串),余下的11行分別為11條不同的測試數(shù)據(jù),每條數(shù)據(jù)包括對應(yīng)的文件名稱、多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型和資源序號。
當(dāng)目標(biāo)行為第11行時,第一預(yù)設(shè)字符串(“__resourceid__”)對應(yīng)的字符串為“529b1517-e910-4ea5-aeab-24e87016235c”,因此,將測試用例文件中本次從中部模板文件中拷貝的內(nèi)容中出現(xiàn)“__resourceid__”的地方全部替換為“529b1517-e910-4ea5-aeab-24e87016235c”。
本實(shí)施例通過腳本文件,將最耗時的手工配置部分用腳本來實(shí)現(xiàn),大大提高效率;通過將數(shù)據(jù)與模板內(nèi)容從腳本中獨(dú)立出來,分別形成數(shù)據(jù)文件和中部模板文件,能夠針對不同的接口測試,直接選擇對應(yīng)的中部模板文件;通過第一預(yù)設(shè)字符串連接數(shù)據(jù)文件和中部模板文件,能夠快速地自動生成測試用例文件,無需人工干預(yù)腳本的編寫,效率高且不易出錯。
圖3示出了本實(shí)施例提供的一種測試用例文件生成方法的流程示意圖,包括:
s301、運(yùn)行腳本文件中的第三腳本,根據(jù)所述第三腳本接收外部輸入的輸入字符串,將頭部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中,并讀取所述頭部模板文件中的第二預(yù)設(shè)字符串;
s302、將所述測試用例文件中的所述第二預(yù)設(shè)字符串替換為所述輸入字符串。
s303、運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中。
s304、運(yùn)行腳本文件中的第二腳本,根據(jù)所述第二腳本讀取數(shù)據(jù)文件,判斷所述數(shù)據(jù)文件中是否存在所述第一預(yù)設(shè)字符串。
s305、若所述數(shù)據(jù)文件中存在所述第一預(yù)設(shè)字符串,則讀取所述數(shù)據(jù)文件的目標(biāo)行中所述第一預(yù)設(shè)字符串對應(yīng)的目標(biāo)字符串,并將所述測試用例文件中的所述第一預(yù)設(shè)字符串替換為所述目標(biāo)字符串。
s306、判斷所述目標(biāo)行是否為所述數(shù)據(jù)文件的最后一行;
s307、若所述目標(biāo)行為所述數(shù)據(jù)文件的最后一行,則運(yùn)行腳本文件中的第四腳本,并根據(jù)所述第四腳本將尾部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中。
其中,s303-s305與圖1對應(yīng)的實(shí)施例中的s101-s103完全對應(yīng),此處不再贅述。
所述輸入字符串為從終端外部輸入的字符串,例如,通過鍵盤輸入的字符串。本實(shí)施例中,輸入字符串包括opcodename(用例名稱)、loginname(登錄用戶名)和sourcefile(數(shù)據(jù)文件名稱)。
所述第二預(yù)設(shè)字符串為頭部模板文件中預(yù)先定義的表示實(shí)際輸入的字符串。
具體地,首先,對于頭部模板文件中的所有數(shù)據(jù),全部拷貝至測試用例文件中,并將頭部模板文件中的第二預(yù)設(shè)字符串替換為輸入字符串;然后,依次將中部模板文件中的所有數(shù)據(jù),全部拷貝至測試用例文件中頭部模板文件內(nèi)容的下面,并將測試用例文件中的第一預(yù)設(shè)字符串替換為目標(biāo)字符串(有n條測試數(shù)據(jù),則拷貝中部模板文件內(nèi)部并替換第一預(yù)設(shè)字符n次);最后,當(dāng)數(shù)據(jù)文件中的所有測試數(shù)據(jù)已替換完畢后,將尾部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中中部模板文件內(nèi)容的下面,完成最終能用于測試的測試用例文件。
所有接口測試用例中頭部和尾部均相同,因此它們可以復(fù)用,即頭部模板文件和尾部模板文件對于所有的接口測試均適用,無需更改,便于新的測試用例的生成。
舉例來說,模板文件如下:
$ls-1template/
all_pre.json
all_suf.json
getresource_mid.json
putresource_mid.json
queryresourceinfo_mid.json
其中,all_pre.json是頭部模板文件,all_suf.json是尾部模板文件,其余json文件均為中部模板文件,每個中部模板文件對應(yīng)一個接口的協(xié)議,在一個測試用例中,僅包括一個中部模板文件中的測試程序。
特定接口的模板文件命名可以為${opcodename}_mid.json。
具體地,頭部模板文件all_pre.json的內(nèi)容示例如下:
尾部模板文件all_suf.json的內(nèi)容示例如下:
$catall_suf.json
]
}
其中,頭部模板文件all_pre.json中的“__opcodename__”和“__loginname__”即為所述第一預(yù)設(shè)字符串,后續(xù)拷貝至測試用例文件后將被對應(yīng)的數(shù)據(jù)文件中的測試數(shù)據(jù)替代。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,s307之后,還包括:
s308、根據(jù)所述測試用例文件中的測試用例,自動對各接口的私有協(xié)議進(jìn)行測試。
其中,所述私有協(xié)議與通用協(xié)議對應(yīng),通用協(xié)議如tcp、http這些通用的協(xié)議,而私有協(xié)議為自己定義的協(xié)議。
由于私有協(xié)議通常是完全自己定義的協(xié)議,因此其測試用例的編寫往往耗時耗力,本實(shí)施例通過自動生成測試用例文件,能夠使用測試用例文件中的測試用例自動對各接口的私有協(xié)議進(jìn)行測試。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,s303之前,還包括:
s3023、獲取預(yù)設(shè)的所述腳本文件、所述中部模板文件、所述頭部模板文件和所述尾部模板文件,并根據(jù)測試要求確定所述數(shù)據(jù)文件。
具體地,每個接口的協(xié)議進(jìn)行測試時,采用相同的腳本文件、頭部模板文件和尾部模板文件,并采用若干個中部模板文件中的一個中部模板文件;針對不同接口的不同協(xié)議進(jìn)行測試時,其數(shù)據(jù)文件一般不同,因此需要根據(jù)測試要求確定數(shù)據(jù)文件。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,所述方法還包括:
s309、若所述數(shù)據(jù)文件中不存在所述預(yù)設(shè)字符串,則生成錯誤提示信息。
其中,所述錯誤提示信息為提示數(shù)據(jù)文件中不存在所述預(yù)設(shè)字符串的信息,以告知用戶測試用例生成過程有誤,無法繼續(xù)。用戶可以檢查數(shù)據(jù)文件在準(zhǔn)備過程中是否有誤。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,所述第一預(yù)設(shè)字符串和/或所述第二預(yù)設(shè)字符串的第一、第二、倒數(shù)第一和倒數(shù)第二個字符均為下劃線。
例如,所述第一預(yù)設(shè)字符串為“__resourceid__”。
通過將第一、第二、倒數(shù)第一和倒數(shù)第二個字符設(shè)置為下劃線,這種格式的字符串在平常情況下不會用到,因此不會產(chǎn)生沖突,也便于第一預(yù)設(shè)字符串和/或所述第二預(yù)設(shè)字符串的識別。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,所述數(shù)據(jù)文件的首行存儲所述第一預(yù)設(shè)字符串。
通過在數(shù)據(jù)文件的首行存儲所述第一預(yù)設(shè)字符串,能夠便于快速查找。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,所述中部模板文件為任意一個接口協(xié)議的模板文件,每個接口協(xié)議的模板文件包括對應(yīng)接口協(xié)議的測試程序。
具體地,一個中部模板文件包括一個接口的一個協(xié)議的模板文件。
通過為每個接口協(xié)議定義一個中部模板文件,便于后續(xù)的復(fù)用。
具體地,本實(shí)施例最后生成的測試用例文件放在cases目錄下;把要測試的接口的按中部模板文件的規(guī)則設(shè)置,放置在template目錄下;當(dāng)需要創(chuàng)建新的接口的測試用例時,只需創(chuàng)建該接口的模板文件和對應(yīng)的數(shù)據(jù)文件,用腳本執(zhí)行即可。
本實(shí)施例不僅可以將最耗時的手工配置部分用腳本來實(shí)現(xiàn),而且將數(shù)據(jù)與模板內(nèi)容從腳本中完全抽離,因此它也可以作為一種通用的數(shù)據(jù)快速生成方案,配置效率相較于手工配置有極大提高,模板文件數(shù)量與對應(yīng)的接口數(shù)量相當(dāng),便于管理;腳本文件只有一個,且一次寫成,無需維護(hù);數(shù)據(jù)文件的列順序可以隨意,降低了生成數(shù)據(jù)文件的成本;支持當(dāng)前所有協(xié)議(以及后續(xù)新增的協(xié)議)的單協(xié)議測試用例生成;測試用例中需要替換的數(shù)據(jù)內(nèi)容支持完全自定義,擴(kuò)展性好;非技術(shù)人員也能按照使用規(guī)則進(jìn)行測試用例的生成,降低技術(shù)門檻,提高工具的應(yīng)用范圍;無需閱讀腳本,數(shù)據(jù)文件自包含每列的含義;能夠初步形成一套快速便捷生成測試用例的方法,基于該方法和代碼,還可以進(jìn)一步改進(jìn),以適應(yīng)混合協(xié)議場景的測試用例生成。
圖4示出了本實(shí)施例提供的一種測試用例文件生成裝置的結(jié)構(gòu)示意圖,所述裝置包括:中部數(shù)據(jù)拷貝模塊401、字符串判斷模塊402和第一字符串替換模塊403;其中:
所述中部數(shù)據(jù)拷貝模塊401用于運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中;
所述字符串判斷模塊402用于運(yùn)行腳本文件中的第二腳本,根據(jù)所述第二腳本讀取數(shù)據(jù)文件,判斷所述數(shù)據(jù)文件中是否存在所述第一預(yù)設(shè)字符串;
所述第一字符串替換模塊403用于若所述數(shù)據(jù)文件中存在所述第一預(yù)設(shè)字符串,則讀取所述數(shù)據(jù)文件的目標(biāo)行中所述第一預(yù)設(shè)字符串對應(yīng)的目標(biāo)字符串,并將所述測試用例文件中的所述第一預(yù)設(shè)字符串替換為所述目標(biāo)字符串。
具體地,所述中部數(shù)據(jù)拷貝模塊401運(yùn)行腳本文件中的第一腳本,根據(jù)所述第一腳本讀取中部模板文件中的第一預(yù)設(shè)字符串,并將所述中部模板文件中的所有數(shù)據(jù)拷貝至測試用例文件中;所述字符串判斷模塊402運(yùn)行腳本文件中的第二腳本,根據(jù)所述第二腳本讀取數(shù)據(jù)文件,判斷所述數(shù)據(jù)文件中是否存在所述第一預(yù)設(shè)字符串;所述第一字符串替換模塊403若所述數(shù)據(jù)文件中存在所述第一預(yù)設(shè)字符串,則讀取所述數(shù)據(jù)文件的目標(biāo)行中所述第一預(yù)設(shè)字符串對應(yīng)的目標(biāo)字符串,并將所述測試用例文件中的所述第一預(yù)設(shè)字符串替換為所述目標(biāo)字符串。
本實(shí)施例通過腳本文件,將最耗時的手工配置部分用腳本來實(shí)現(xiàn),大大提高效率;通過將數(shù)據(jù)與模板內(nèi)容從腳本中獨(dú)立出來,分別形成數(shù)據(jù)文件和中部模板文件,能夠針對不同的接口測試,直接選擇對應(yīng)的中部模板文件;通過第一預(yù)設(shè)字符串連接數(shù)據(jù)文件和中部模板文件,能夠快速地自動生成測試用例文件,無需人工干預(yù)腳本的編寫,效率高且不易出錯。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述裝置還包括:
頭部數(shù)據(jù)拷貝模塊,用于運(yùn)行腳本文件中的第三腳本,根據(jù)所述第三腳本接收外部輸入的輸入字符串,將頭部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中,并讀取所述頭部模板文件中的第二預(yù)設(shè)字符串;
第二字符串替換模塊,用于將所述測試用例文件中的所述第二預(yù)設(shè)字符串替換為所述輸入字符串。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述裝置還包括:
目標(biāo)行判斷模塊,用于判斷所述目標(biāo)行是否為所述數(shù)據(jù)文件的最后一行;
尾部數(shù)據(jù)拷貝模塊,用于若所述目標(biāo)行為所述數(shù)據(jù)文件的最后一行,則運(yùn)行腳本文件中的第四腳本,并根據(jù)所述第四腳本將尾部模板文件中的所有數(shù)據(jù)拷貝至所述測試用例文件中。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述裝置還包括:
私有協(xié)議測試模塊,用于根據(jù)所述測試用例文件中的測試用例,自動對各接口的私有協(xié)議進(jìn)行測試。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述裝置還包括:
文件獲取模塊,用于獲取預(yù)設(shè)的所述腳本文件、所述中部模板文件、所述頭部模板文件和所述尾部模板文件,并根據(jù)測試要求確定所述數(shù)據(jù)文件。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述裝置還包括:
錯誤提示模塊,用于若所述數(shù)據(jù)文件中不存在所述預(yù)設(shè)字符串,則生成錯誤提示信息。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述第一預(yù)設(shè)字符串和/或所述第二預(yù)設(shè)字符串的第一、第二、倒數(shù)第一和倒數(shù)第二個字符均為下劃線。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述數(shù)據(jù)文件的首行存儲所述第一預(yù)設(shè)字符串。
進(jìn)一步地,在上述裝置實(shí)施例的基礎(chǔ)上,所述中部模板文件為任意一個接口協(xié)議的模板文件,每個接口協(xié)議的模板文件包括對應(yīng)接口協(xié)議的測試程序。
本實(shí)施例所述的測試用例文件生成裝置可以用于執(zhí)行上述方法實(shí)施例,其原理和技術(shù)效果類似,此處不再贅述。
參照圖5,所述電子設(shè)備,包括:處理器(processor)501、存儲器(memory)502和總線503;
其中,
所述處理器501和存儲器502通過所述總線503完成相互間的通信;
所述處理器501用于調(diào)用所述存儲器502中的程序指令,以執(zhí)行上述各方法實(shí)施例所提供的方法。
本實(shí)施例公開一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲在非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時,計(jì)算機(jī)能夠執(zhí)行上述各方法實(shí)施例所提供的方法。
本實(shí)施例提供一種非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì),所述非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì)存儲計(jì)算機(jī)指令,所述計(jì)算機(jī)指令使所述計(jì)算機(jī)執(zhí)行上述各方法實(shí)施例所提供的方法。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在計(jì)算機(jī)可讀存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實(shí)施例或者實(shí)施例的某些部分所述的方法。
應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。