中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站做百度推廣搜狐綜合小時報(bào)2022113011

網(wǎng)站做百度推廣,搜狐綜合小時報(bào)2022113011,怎么自己做網(wǎng)站發(fā)優(yōu)惠券,windows怎么安裝wordpress汽車軟件開發(fā)自動化測試攻略 隨著軟件開發(fā)在造車行業(yè)中占有越來越重要的地位,敏捷開發(fā)的思想在造車領(lǐng)域中也逐漸地被重視起來,隨之而來的是整車廠對自動化測試需求越來越強(qiáng)烈。本文結(jié)合北匯在自動化測試方面的豐富經(jīng)驗(yàn),簡單介紹一下實(shí)施自動…

汽車軟件開發(fā)自動化測試攻略

隨著軟件開發(fā)在造車行業(yè)中占有越來越重要的地位,敏捷開發(fā)的思想在造車領(lǐng)域中也逐漸地被重視起來,隨之而來的是整車廠對自動化測試需求越來越強(qiáng)烈。本文結(jié)合北匯在自動化測試方面的豐富經(jīng)驗(yàn),簡單介紹一下實(shí)施自動化測試可能需要具備的技能及具體實(shí)踐流程。

自動化測試城門-Python

要實(shí)現(xiàn)完全的自動化測試,我們首先要做的是先實(shí)現(xiàn)半自動化測試,即編寫自動化測試腳本。俗話說 Life is short,I use Python,Python,作為一種簡單易上手的高級編程語言,憑借其“無所不包”的庫,成為測試腳本開發(fā)的不二之選。這里簡單介紹一下,測試腳本開發(fā)常用的一些Python標(biāo)準(zhǔn)庫。

城門士卒-os庫

在編寫測試腳本時,不可避免地會遇到對文件路徑的獲取及編輯,os庫里的path函數(shù)

可以方便地實(shí)現(xiàn)這些操作,如絕對路徑獲取os.path.abspath()、路徑拼接os.path.join()、路徑存在判斷os.path.exist()等;如果你需要在Python中運(yùn)行測試工具提供的命令,那么os庫的system函數(shù)或popen函數(shù)

可以讓你方便地調(diào)用cmd(Windows)或shell(Linux)。

· 城門士卒-sys庫

如果你所編寫的測試腳本有跨平臺運(yùn)行的需求,那么你可以通過sys庫的platform函數(shù)

獲取腳本的運(yùn)行環(huán)境。根據(jù)運(yùn)行環(huán)境的不同,編寫不同的批處理命令;sys庫中的argv函數(shù),還可以為你的測試腳本提供簡單的命令行接口,當(dāng)你的腳本需要接收外部傳遞的參數(shù)時,你可以通過sys.argv[]方便地獲取。而如果你需要編寫更復(fù)雜更友好的命令行接口,你需要使用Python的另外一個標(biāo)準(zhǔn)庫argparse

來實(shí)現(xiàn)。

· 城門隊(duì)長-re庫

正則表達(dá)式是編寫測試腳本的必備技能,因?yàn)橛袝r我們會遇到復(fù)雜的文本處理,如在工程文件中查找需要修改的配置,并將其修改為我們所需要的內(nèi)容。此時一般的查找替換函數(shù)

就很難實(shí)現(xiàn)這個功能,我們只能借助強(qiáng)大的re庫

(正則表達(dá)式)來解決這個棘手的問題。re庫提供的函數(shù)有:

re.compile():編譯 正則表達(dá)式
,生成一個 Pattern 對象;
re.findall():搜索所有滿足條件的字符串;
re.match():從第一個字符開始匹配模式;
re.search():搜索第一個滿足條件的字符串,查找到第一個停止;
re.sub():替換滿足條件的字符串。

在使用re模塊時,我們一般先用re.compile()將正則表達(dá)式編譯生成為一個Pattern對象,然后再基于這個對象進(jìn)行findall、match等操作,這樣既可以提高代碼的可讀性,也可以提高代碼的運(yùn)行效率。

使用正則表達(dá)式進(jìn)行查找替換是很方便的,但是在很多時候我們需要在匹配的字符串前后添加內(nèi)容,并且保留匹配的內(nèi)容,這時普通的查找替換是難以實(shí)現(xiàn)的。

現(xiàn)在我也找了很多測試的朋友,做了一個分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時找不到資源,沒人解答問題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開源的!!!
qq群號:691998057【暗號:csdn999】

如:希望將hour: minute格式后添加:00,形成hour: minute: seconds這種格式。此時可以采用如下方式來實(shí)現(xiàn):

查找的正則表達(dá)式:

(\d:\d)

替換為:

\1\:00

這里,我們在替換的字符中使用\1,來引用正則表達(dá)式中第一個分組匹配到的內(nèi)容,如果正則表達(dá)式中有多個分組,可以依次使用\2\3等進(jìn)行引用,可以使用\0來引用整個正則表達(dá)式的內(nèi)容。

· 小結(jié)

在掌握了Python基礎(chǔ)語法和這三個標(biāo)準(zhǔn)庫后,自動化測試的大門就為我們敞開了。但是想要編寫一個可以驅(qū)動測試工具進(jìn)行測試的腳本,我們還需要了解測試工具在headless模式【1】下的接口情況,如果工具提供的接口豐富,可以實(shí)現(xiàn)在headless模式下對測試工程進(jìn)行配置和執(zhí)行等操作,那么我們的測試腳本

開發(fā)工作將會順利地進(jìn)行。

但是如果工具提供的headless模式接口有限,無法滿足測試腳本的需求,那么進(jìn)入自動化測試大門后,等待我們的就是另一個棘手的問題:如何對工程文件進(jìn)行解析與修改??紤]到大部分的工程文件都是XML格式的,因此后續(xù)我們就簡單介紹一下如何通過Python解析和修改XML文件。

【1】:這里的headless模式是指在不使用工具GUI的情況下,以純命令行的方式進(jìn)行工具使用的模式。

自動化測試甕城——XML文件

· 甕城守備——XML解析

在Python的標(biāo)準(zhǔn)庫中,有專門處理XML文件的庫,無需安裝第三方庫就可以使用Python進(jìn)行XML文件的解析,但是要想準(zhǔn)確地從XML文件中解析出想要的信息,我們首先需要簡單了解一下XML的文件結(jié)構(gòu)。如下是一個簡單的XML文檔。

<bookstore>
<book category="COOKING"><title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> 
</book>
<book category="CHILDREN"><title lang ="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> 
</book>
<book category="WEB"><title lang ="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> 
</book>
</bookstore>

其中Harry Potter元素的結(jié)構(gòu)如下圖所示:

圖片來源于https://www.w3school.com.cn/xml/xml_tree.asp

在該XML文本中,根元素是 <bookstore>,文檔中的所有 <book> 元素都被包含在 <bookstore> 里。<book> 元素有 4 個子元素:<title>、< author>、<year>、<price>。每個子元素都包含一個文本內(nèi)容,但只有子元素title和元素book擁有屬性。

我們在解析XML時,一般需要獲取的就是元素的屬性值以及元素的文本內(nèi)容。以下我們就簡單介紹一下,如何通過python獲取元素的屬性值及文本內(nèi)容。

Python的XML庫提供了一個通過標(biāo)簽名稱獲取元素的函數(shù) getElementsByTagName(),該函數(shù)返回的是一個包含元素對象的list,通過調(diào)用元素對象的attributes方法,我們就可以方便地獲取元素的屬性值。如,我們可以使用如下命令獲取XML文件中第一個標(biāo)簽為title的lang屬性值:

root.getElementsByTagName("title")[0].attributes.getNamedItem("lang").nodeValue

獲取第一個標(biāo)簽為title的元素的文本信息的代碼如下:

root.getElementsByTagName("title")[0].firstChild.data

· 甕城參將

——XML修改

XML元素的屬性和文本內(nèi)容修改很簡單,在上小節(jié)中獲取對應(yīng)的元素信息后,直接對其進(jìn)行賦值即可。但是,修改后的信息保存在XML對象中。要完成對實(shí)際XML文件的修改,我們還需要用XML對象中的內(nèi)容覆蓋原有的XML文件,這一步存在很多棘手的問題。

在XML文件中,為了避免元素文本內(nèi)容中存在的特殊字符引起解析器錯誤,在文本內(nèi)容中引入實(shí)體引用來替代可能導(dǎo)致錯誤的字符,如回車&#xA;、雙引號&quot;、單引號&apos;。如果使用python的xml.dom.minidom庫解析并使用writexml輸出XML文件,該庫會將這些實(shí)體引用轉(zhuǎn)義為其實(shí)際字符進(jìn)行保存。如果不對XML對象中的內(nèi)容進(jìn)行處理,導(dǎo)出的XML文件將會存在很多錯誤。

為了避免這個情況的出現(xiàn),我們需要使用之前小節(jié)介紹的正則表達(dá)式將這些字符再替換為其實(shí)體引用。這個過程需要我們能熟練使用正則表達(dá)式進(jìn)行文本查找與替換。

除了XML文件中的實(shí)體引用外,如果XML文件中存在中文字符,那么還有一個需要注意的事情:不要使用with open as

的方式讀寫XML文件,要使用open指定文件

的編碼為 'utf-8' 的方式,對XML文件進(jìn)行寫入。如下所示:

f = open(self.JenkinsJobXMLPath, 'w', encoding="utf-8")
dom.writexml(f, indent='', addindent='\t', newl='', encoding='utf-8')  
f.close()

· 小結(jié)

上述兩個問題是修改XML文件時普遍會遇到的問題。解決了這兩個問題,我們基本上就可以完美實(shí)現(xiàn)XML文件的修改了。此時,我們就可以編寫自動化程度更高的測試腳本,然而我們依然無法實(shí)現(xiàn)完全的自動化測試,因?yàn)槲覀內(nèi)匀恍枰謩拥厝?zhí)行測試腳本。那么,我們該如何實(shí)現(xiàn)測試腳本的自動執(zhí)行呢?這就需要我們打通自動化測試的最后一個關(guān)卡,Jenkins。

自動化測試總兵——Jenkins

Jenkins 是一個開源、免費(fèi)的可擴(kuò)展持續(xù)集成引擎

,主要用于:

持續(xù)、自動地構(gòu)建/測試軟件項(xiàng)目;
監(jiān)控一些定時執(zhí)行的任務(wù)。

為了實(shí)現(xiàn)測試腳本的自動化運(yùn)行,我們需要配置Jenkins Job,使Jenkins在設(shè)置的觸發(fā)條件滿足時,自動搭建測試腳本的運(yùn)行環(huán)境,然后執(zhí)行測試腳本,最后將測試結(jié)果發(fā)送給相關(guān)人員。因此我們需要了解Jenkins的源碼管理、構(gòu)建觸發(fā)器、構(gòu)建及郵件通知等設(shè)置。

· 總兵的連招1——源碼管理

Jenkins服務(wù)器最基本的作用是監(jiān)視版本控制器,當(dāng)版本庫

有新的更改時,檢出版本庫中的文件,或者,你可以選擇只是定期檢出版本庫中最新的文件。無論哪種方式,Jenkins與版本控制軟件

的集成是必不可少的。

Jenkins開箱即用

式支持Git、CVS和SVN,還通過插件與大量其他版本控制工具進(jìn)行集成,如ClearCase、Perforce、PVCS等等。

不同的版本控制軟件在Jenkins端的需要的配置并不相同,有的甚至差異很大。但是只要你熟悉你所使用的版本控制軟件,那么在Jenkins端,就可以很容易地對版本庫進(jìn)行配置。

以SVN為例,為了從SVN倉庫中獲取源碼,我們需要提供相應(yīng)SVN版本庫的URL,在完成URL輸入后,Jenkins會檢查URL的有效性,如果所提供的URL要求身份認(rèn)證,Jenkins將會自動提示選擇相應(yīng)的憑據(jù)以驗(yàn)證賬號信息,如下圖所示。

默認(rèn)情況下,Jenkins會將給定的代碼庫中的文件檢出到Jenkins Job的Workspace中。如果你需要將代碼庫檢出到指定的目錄中,你可以在Local module directory

中輸入你想要的目錄名或相對Workspace的路徑。

如果你需要從多個SVN版本庫中獲取文件,可以點(diǎn)擊“Add module ...”按鈕,來添加別的版本庫。

· 總兵的連招2

——構(gòu)建觸發(fā)器

常用的構(gòu)建觸發(fā)器有周期性構(gòu)建

SCM輪詢構(gòu)建,兩者都是使用相同corn風(fēng)格語法進(jìn)行設(shè)置,如下圖所示。

我們只需要了解corn風(fēng)格

的語法,就可以方便地進(jìn)行構(gòu)建觸發(fā)器的設(shè)置。corn風(fēng)格的語法包含五個由空格分隔的字段:

MINUTE HOUR DOM MONTH DOW

每個字段使用下面的值:

MINUTE 小時內(nèi)的分鐘數(shù)(0-59)
HOUR 一天的小時數(shù)(0-23)
DOM 本月的天數(shù)(1-31)
MONTH 月份(1-12)
DOW 本周的一天(0-7),其中0和7都是星期日

要為一個字段指定多個值,可以使用以下操作符:

“*”代表一個字段的所有可能的值。如,“* * * * *”表示周期為一分鐘;
使用“M-N”定義范圍。如,在DOW中“1-5”表示周一到周五;
使用“/”定義范圍間隔時間。如,MINUTE字段“*/5”表示每5分鐘;
逗號分隔的列表表示有效值。如,MINUTE字段“15,45”表示在每小時的第15和第45分鐘運(yùn)行;

通常,我們只需要在這個字段中寫一行,但是對于更復(fù)雜的調(diào)度配置,我們可能需要寫多行。

· 總兵的連招3

——構(gòu)建

在完成了之前的配置后,Jenkins應(yīng)該知道在何時從何處獲取測試工程及源碼?,F(xiàn)在我們需要做的事情是,告訴Jenkins在獲取測試工程和源碼后該如何做。一般情況下,我們會將之前編寫的測試腳本放在測試工程的版本庫中,或者從專門的測試腳本庫中檢出到Jenkins Job的Workspace中,因此我們在這里只需要執(zhí)行編寫好的測試腳本即可。

執(zhí)行腳本的方式可以根據(jù)具體腳本的運(yùn)行環(huán)境,選擇執(zhí)行Shell或Windows批處理命令。因此我們需要簡單地了解Shell或Windows的常用批處理命令。為了避免編寫復(fù)雜的批處理命令,我們應(yīng)盡量把工作放在測試腳本中完成。本文以如下圖所示的簡單的Windows批處理為例,簡單介紹一下構(gòu)建步驟的編寫。

在上圖中,有兩行命令:

第一行的作用是將目錄由初始的Workspace目錄切換到Workspace下的Script目錄;
第二行的作用是運(yùn)行Script目錄中的測試腳本Script.py,并為該腳本傳遞一個參數(shù),該參數(shù)為Jenkins的環(huán)境變量JOB_NAME,即當(dāng)前Jenkins Job的名稱。

這樣就完成了對測試腳本的調(diào)用。

· 總兵的連招4——郵件通知

自動化測試的一個重要環(huán)節(jié),就是將測試結(jié)果通知到相關(guān)人員,如開發(fā)\測試人員,或項(xiàng)目管理人員等。Jenkins對電子郵件提供了開箱即用的支持,我們可以在構(gòu)建后處理中勾選E-mail Notification,如下圖所示。然后輸入需要通知的人員郵箱,即可使Jenkins在構(gòu)建完成后,向指定的人員發(fā)送一封友好的電子郵件。

如果你想對郵件內(nèi)容進(jìn)行高度定制,那么E-mail Notification就無法滿足需求,我們需要安裝可編輯的電子郵件插件Editable Email Notification,來實(shí)現(xiàn)電子郵件的定制化工作。

在Editable Email Notification中,我們可以用HTML編寫電子郵件的內(nèi)容,并引用Jenkins的環(huán)境變量,這樣我們就可以在郵件中描述當(dāng)前Jenkins Job的測試執(zhí)行概況,讓收件人快速地了解當(dāng)前的測試狀態(tài)。但是這要求我們對HTML和Jenkins環(huán)境變量都有比較深的了解。

有些情況下,我們需要在郵件中執(zhí)行一些數(shù)據(jù)提取等復(fù)雜工作,比如將控制臺輸出中的一些數(shù)據(jù)在郵件中進(jìn)行展示,這時我們需要借助email-ext-plugin插件提供的Groovy接口,用Groovy編寫郵件內(nèi)容。

總之,Jenkins的郵件通知功能非常強(qiáng)大,我們可以在自動化測試的工作中不斷進(jìn)行探索。

小結(jié)

本節(jié)簡單介紹了Jenkins的傳統(tǒng)表單類型的Freestyle Job,然而目前Jenkins的發(fā)展方向是 Pipeline Job,Jenkins將Pipeline作為優(yōu)先開發(fā)項(xiàng)目。這就意味著Pipeline在應(yīng)用程序中是作為實(shí)體被設(shè)計(jì)和支持的,而不是通過在Jenkins中連接一堆任務(wù)而形成流水線。Pipeline類型的Job可以通過編程實(shí)現(xiàn),可以實(shí)現(xiàn)更復(fù)雜構(gòu)建邏輯和工作流,更重要的是在Pipeline中有專門的用于流水線編程的結(jié)構(gòu)化DSL,其可以在工作空間中輕松地實(shí)現(xiàn)文件共享功能。同時Pipeline具有全新的Jenkins可視化界面 ——Blue Ocean,其為Pipeline的每個階段添加了圖形化的展示,如下圖所示。

因此我們在熟悉了表單類型的 Freestyle Job后,可以嘗試將其轉(zhuǎn)換為Pipeline的Job,當(dāng)然目前并非所有的Jenkins插件都支持Pipeline,有些老舊的插件還無法支持Pipeline,我們需要根據(jù)實(shí)際的工作情況進(jìn)行Jenkins工程類型的選擇。

end今天的分享就到處結(jié)束了!底贊關(guān)注不迷路!

http://www.risenshineclean.com/news/51420.html

相關(guān)文章:

  • 虛擬網(wǎng)站什么是搜索引擎營銷?
  • 網(wǎng)站建設(shè)哪家好 上海廣州疫情升級
  • 古典風(fēng)格網(wǎng)站模板htmlseo的搜索排名影響因素主要有
  • 天河做網(wǎng)站系統(tǒng)放單平臺
  • 南寧網(wǎng)站建設(shè)制作優(yōu)化大師哪個好
  • 手機(jī)英文網(wǎng)站大全各大搜索引擎入口
  • 企業(yè)管理模式馮宗耀seo教程
  • 做網(wǎng)站的總結(jié)游戲推廣員是做什么的
  • 網(wǎng)站運(yùn)營和維護(hù)吉林seo刷關(guān)鍵詞排名優(yōu)化
  • 酷炫網(wǎng)站設(shè)計(jì)蘇州seo排名公司
  • 個人網(wǎng)站logo設(shè)計(jì)百度營銷推廣登錄
  • 陽谷做網(wǎng)站推廣石家莊關(guān)鍵詞優(yōu)化軟件
  • 株洲網(wǎng)站優(yōu)化找哪家網(wǎng)站模板哪家好
  • 做網(wǎng)站一直不知道做什么網(wǎng)站愛戰(zhàn)網(wǎng)關(guān)鍵詞挖掘查詢工具
  • 鹽城網(wǎng)站建設(shè)費(fèi)用seo顧問服
  • 網(wǎng)站建設(shè) 策劃方案書1688官網(wǎng)
  • 朋友用我的vps做網(wǎng)站模板網(wǎng)站建站哪家好
  • 專注做一家男生最愛的網(wǎng)站百度代發(fā)排名
  • 常用h5的制作工具seo關(guān)鍵詞排名優(yōu)化方案
  • 今日頭條模板WordPress優(yōu)化深圳seo
  • b2b網(wǎng)站建立百度開放云平臺
  • 網(wǎng)站項(xiàng)目經(jīng)費(fèi)預(yù)算新聞稿營銷
  • 網(wǎng)站建設(shè)綜合技術(shù)百度首頁登錄
  • 網(wǎng)站建設(shè)技巧亅金手指排名25網(wǎng)站頁面優(yōu)化方案
  • google建設(shè)網(wǎng)站賺錢青島seo優(yōu)化公司
  • 深圳網(wǎng)站建設(shè)憂化在線seo外鏈工具
  • 重慶seo網(wǎng)站設(shè)計(jì)旅游營銷推廣方案
  • 深圳專業(yè)網(wǎng)站制作技術(shù)簡單的網(wǎng)站建設(shè)
  • WordPress改url進(jìn)不去搜索引擎優(yōu)化 簡歷
  • 工業(yè)設(shè)計(jì)公司深圳本也設(shè)計(jì)seo優(yōu)化服務(wù)