国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python自動化測試攻城記

北匯信息POLELINK ? 2022-08-16 11:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著軟件開發在造車行業中占有越來越重要的地位,敏捷開發的思想在造車領域中也逐漸地被重視起來,隨之而來的是整車廠對自動化測試需求越來越強烈。本文結合北匯信息在自動化測試方面的豐富經驗,簡單介紹一下實施自動化測試可能需要具備的技能及具體實踐流程。

自動化測試城門-Python

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

城門士卒-os庫

在編寫測試腳本時,不可避免地會遇到對文件路徑的獲取及編輯,os庫里的path函數可以方便地實現這些操作,如絕對路徑獲取os.path.abspath()、路徑拼接os.path.join()、路徑存在判斷os.path.exist()等;如果你需要在Python中運行測試工具提供的命令,那么os庫的system函數或popen函數可以讓你方便地調用cmd(Windows)或shell(Linux)。

城門士卒-sys庫

如果你所編寫的測試腳本有跨平臺運行的需求,那么你可以通過sys庫的platform函數獲取腳本的運行環境。根據運行環境的不同,編寫不同的批處理命令;sys庫中的argv函數,還可以為你的測試腳本提供簡單的命令行接口,當你的腳本需要接收外部傳遞的參數時,你可以通過sys.argv[]方便地獲取。而如果你需要編寫更復雜更友好的命令行接口,你需要使用Python的另外一個標準庫argparse來實現。

城門隊長-re庫

正則表達式是編寫測試腳本的必備技能,因為有時我們會遇到復雜的文本處理,如在工程文件中查找需要修改的配置,并將其修改為我們所需要的內容。此時一般的查找替換函數就很難實現這個功能,我們只能借助強大的re庫(正則表達式)來解決這個棘手的問題。re庫提供的函數有:

re.compile():編譯正則表達式,生成一個 Pattern對象;

re.findall():搜索所有滿足條件的字符串;

re.match():從第一個字符開始匹配模式;

re.search():搜索第一個滿足條件的字符串,查找到第一個停止;

re.sub():替換滿足條件的字符串。

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

使用正則表達式進行查找替換是很方便的,但是在很多時候我們需要在匹配的字符串前后添加內容,并且保留匹配的內容,這時普通的查找替換是難以實現的。

如:希望將hour: minute格式后添加:00形成hour: minute: seconds這種格式。此時可以采用如下方式來實現:

查找的正則表達式:

poYBAGLnh7mAePrWAAADkZpIYkQ622.png

替換為:

poYBAGLnh9yAVQX0AAADG7_W7LE022.png

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

小結

在掌握了Python基礎語法和這三個標準庫后,自動化測試的大門就為我們敞開了。但是想要編寫一個可以驅動測試工具進行測試的腳本,我們還需要了解測試工具在headless模式[1]下的接口情況,如果工具提供的接口豐富,可以實現在headless模式(這里的headless模式是指在不使用工具GUI的情況下,以純命令行的方式進行工具使用的模式)下對測試工程進行配置和執行等操作,那么我們的測試腳本開發工作將會順利地進行。

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

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

甕城守備——XML解析

在Python的標準庫中,有專門處理XML文件的庫,無需安裝第三方庫就可以使用Python進行XML文件的解析,但是要想準確地從XML文件中解析出想要的信息,我們首先需要簡單了解一下XML的文件結構。如下是一個簡單的XML文檔。

poYBAGLnhpuAT7X2AABuB1dsB9c521.png

其中Harry Potter元素的結構如下圖所示:

poYBAGLnhquAPKi1AACDKy3dYYo420.png

注:圖片來源于w3school

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

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

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

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

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

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

甕城參將——XML修改

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

在XML文件中,為了避免元素文本內容中存在的特殊字符引起解析器錯誤,在文本內容中引入實體引用來替代可能導致錯誤的字符,如回車 、雙引號"、單引號'。如果使用python的xml.dom.minidom庫解析并使用writexml輸出XML文件,該庫會將這些實體引用轉義為其實際字符進行保存。如果不對XML對象中的內容進行處理,導出的XML文件將會存在很多錯誤。

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

除了XML文件中的實體引用外,如果XML文件中存在中文字符,那么還有一個需要注意的事情:不要使用with openas的方式讀寫XML文件,要使用open指定文件的編碼為'utf-8’的方式,對XML文件進行寫入。如下所示:

f =open(self.JenkinsJobXMLPath,'w',encoding="utf-8")

dom.writexml(f,indent='',addindent='\t',newl='',encoding='utf-8')

f.close()

小結

上述兩個問題是修改XML文件時普遍會遇到的問題。解決了這兩個問題,我們基本上就可以完美實現XML文件的修改了。此時,我們就可以編寫自動化程度更高的測試腳本,然而我們依然無法實現完全的自動化測試,因為我們仍然需要手動地去執行測試腳本。那么,我們該如何實現測試腳本的自動執行呢?這就需要我們打通自動化測試的最后一個關卡,Jenkins。

自動化測試總兵——Jenkins

Jenkins是一個開源、免費的可擴展持續集成引擎,主要用于:

  • 持續、自動地構建/測試軟件項目;
  • 監控一些定時執行的任務。

為了實現測試腳本的自動化運行,我們需要配置JenkinsJob,使Jenkins在設置的觸發條件滿足時,自動搭建測試腳本的運行環境,然后執行測試腳本,最后將測試結果發送給相關人員。因此我們需要了解Jenkins的源碼管理、構建觸發器、構建及郵件通知等設置。

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

Jenkins服務器最基本的作用是監視版本控制器,當版本庫有新的更改時,檢出版本庫中的文件,或者,你可以選擇只是定期檢出版本庫中最新的文件。無論哪種方式,Jenkins與版本控制軟件的集成是必不可少的。

Jenkins開箱即用式支持Git、CVS和SVN,還通過插件與大量其他版本控制工具進行集成,如ClearCase、Perforce、PVCS等等。

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

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

pYYBAGL7CWWALfUUAACWVaLNgMg325.png

默認情況下,Jenkins會將給定的代碼庫中的文件檢出到JenkinsJob的Workspace中。如果你需要將代碼庫檢出到指定的目錄中,你可以在Localmoduledirectory中輸入你想要的目錄名或相對Workspace的路徑。

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

總兵的連招2——構建觸發器

常用的構建觸發器有周期性構建SCM輪詢構建,兩者都是使用相同corn風格語法進行設置,如下圖所示。

pYYBAGL7CaKAPKKDAADKSf5mFWE579.png

我們只需要了解corn風格的語法,就可以方便地進行構建觸發器的設置。corn風格的語法包含五個由空格分隔的字段:

MINUTE HOUR DOM MONTH DOW

每個字段使用下面的值:

MINUTE小時內的分鐘數(0-59)

HOUR一天的小時數(0-23)

DOM本月的天數(1-31)

MONTH月份(1-12)

DOW本周的一天(0-7),其中0和7都是星期日。

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

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

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

總兵的連招3——構建

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

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

pYYBAGL7CWWAKlP8AABE10yxQAU229.png

在上圖中,有兩行命令:

第一行的作用是將目錄由初始的Workspace目錄切換到Workspace下的Script目錄;

第二行的作用是運行Script目錄中的測試腳本Script.py,并為該腳本傳遞一個參數,該參數為Jenkins的環境變量JOB_NAME,即當前JenkinsJob的名稱。

這樣就完成了對測試腳本的調用。

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

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

poYBAGL7CWWALgZiAABrJ5b2yX4204.png

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

在Editable Email Notification中,我們可以用HTML編寫電子郵件的內容,并引用Jenkins的環境變量,這樣我們就可以在郵件中描述當前JenkinsJob的測試執行概況,讓收件人快速地了解當前的測試狀態。但是這要求我們對HTML和Jenkins環境變量都有比較深的了解。

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

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

小結

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

poYBAGL7CWWALvVYAABcqqXVyQI872.png

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

攻城總結

古人云:知所不豫,行且通焉。雖然通過本文,我們全面地了解了自動化測試的流程,但是只有在自動化測試的實踐中不斷探索,我們才能真正窺得自動化測試的全貌。北匯信息作為專業的自動化測試服務供應商,也可以為客戶提供優質全面的自動化測試服務。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化測試
    +關注

    關注

    0

    文章

    268

    瀏覽量

    27788
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90025
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    自動化測試的「千里眼」:當RTSM遠程控制遇上自動化測試效率直接拉滿!

    自動化痛點】自動化測試的“黑箱困境”:你真的敢說“完全放心”? 凌晨2點,測試工程師小李盯著電腦屏幕上的自動化腳本進度條——第17步卡住了
    的頭像 發表于 12-11 11:26 ?389次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的「千里眼」:當RTSM遠程控制遇上<b class='flag-5'>自動化</b>,<b class='flag-5'>測試</b>效率直接拉滿!

    CI/CT自動化測試解決方案

    北匯信息可以提供Jenkins、Gitlab Runner CI和自研平臺等的CI/CT整體解決方案,通過CI/CT自動化測試執行、測試策略定制、測試任務
    的頭像 發表于 11-12 16:01 ?1440次閱讀
    CI/CT<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>解決方案

    Python到TSP:快速上手MP5000自動化測試系統

    驗證工程師、生產測試工程師和系統集成商經常負責開發自動化測試設備(ATE)系統,該系統被廣泛應用于各種半導體器件的測試,如晶體管、二極管、MOSFET和ASIC等。
    的頭像 發表于 11-07 11:21 ?5838次閱讀
    從<b class='flag-5'>Python</b>到TSP:快速上手MP5000<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>系統

    測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案

    還在為不懂代碼、搭建測試方案耗時久而發愁?ATECLOUD 零代碼自動化測試平臺,專為自動化測試量身打造,小白3 分鐘就能輕松上手,15 分
    的頭像 發表于 09-22 17:52 ?843次閱讀
    <b class='flag-5'>測試</b>小白3分鐘上手,零代碼<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺,15分鐘搭建<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>方案

    電源模塊的短路保護如何通過自動化測試軟件完成測試

    在當今電力電子領域,電源模塊的可靠性至關重要,短路保護作為其關鍵特性,需通過精確的自動化測試軟件進行驗證。本文將整理如何借助自動化測試軟件ATECLOUD完成電源模塊短路保護的
    的頭像 發表于 09-03 19:10 ?840次閱讀
    電源模塊的短路保護如何通過<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>軟件完成<b class='flag-5'>測試</b>

    如何用Renix實現網絡測試自動化: 從配置分離到多廠商設備支持

    文章主要介紹如何使用Renix高層封裝API編寫自動化腳本的基礎知識和技巧。只要您熟悉測試流程,不需要很強的代碼能力就可以順利編寫自動化測試。 本教程將以實踐為導向,引導您逐步掌握Re
    的頭像 發表于 08-27 15:21 ?627次閱讀
    如何用Renix實現網絡<b class='flag-5'>測試</b><b class='flag-5'>自動化</b>: 從配置分離到多廠商設備支持

    Python腳本實現運維工作自動化案例

    還在為重復性運維工作而煩惱?每天被各種告警、監控、部署搞得焦頭爛額?作為一名有10年經驗的運維老司機,今天分享5個超實用的Python自動化腳本,讓你的運維工作效率提升300%!這些都是我在生產環境中實際使用的案例,代碼簡潔高效,拿來即用!
    的頭像 發表于 08-27 14:46 ?1156次閱讀

    除了LabVIEW還有哪些自動化測試的軟件?

    NI 開發的 LabVIEW 軟件在工業控制領域中一直占有舉足輕重的地位,其市場占有率在一眾平臺中也是領先的,那么除了 LabVIEW 拿有哪些自動化測試的軟件?本文將介紹一些自動化測試
    的頭像 發表于 07-30 17:18 ?1051次閱讀
    除了LabVIEW還有哪些<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的軟件?

    自動化測試平臺中TestCenter和ATECLOUD有哪些差異?

    TestCenter和ATECLOUD雖然都是自動化測試平臺,但兩者在試用領域、技術架構、功能特性等方面具有很大的差異性,兩者的面向客戶也有所不同。本文將簡單分析兩個平臺的特點和差異
    的頭像 發表于 07-25 09:54 ?699次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺中TestCenter和ATECLOUD有哪些差異?

    自動化測試平臺ATECLOUD推出AI算法功能

    作為納米軟件自主研發的自動化測試平臺,ATECLOUD 始終致力于為用戶提供高效優質的測試解決方案。面對5G、AI等前沿技術的迭代發展,平臺深度融合新技術持續升級測試能力,最新推出的A
    的頭像 發表于 07-22 16:10 ?806次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺ATECLOUD推出AI算法功能

    車機交互測試自動化實現路徑與案例分析

    測試設備是車機交互測試自動化實現的核心支撐,通過合理選型、部署和應用北京沃華慧通測控技術有限公司汽車測試設備,結合科學的實現路徑和豐富的案例經驗,能夠有效提高車機交互
    的頭像 發表于 07-10 09:24 ?1388次閱讀
    車機交互<b class='flag-5'>測試</b><b class='flag-5'>自動化</b>實現路徑與案例分析

    UTP系統通過ModBus協議對溫度傳感器的自動化測試介紹

    一、UTP系統簡介 宏控UTP協同自動化測試系統(簡稱UTP測試系統)是一款通用的自動化測試系統,支持對總線通信(如串口、CAN、以太網等)
    的頭像 發表于 06-07 15:12 ?807次閱讀
    UTP系統通過ModBus協議對溫度傳感器的<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>介紹

    APP自動化測試框架

    APP自動化測試框架是一套結合工具鏈、設計模式和技術規范的集成解決方案。以下是基于主流技術實踐的核心要點總結: 一、核心模塊構成 環境管理? 支持物理機/虛擬機/容器部署,集成ADB、Appium
    的頭像 發表于 05-07 07:35 ?665次閱讀
    APP<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>框架

    TH2822系列LCR測試儀的自動化測試

    在電子元件制造與研發領域,LCR測試儀(電感、電容、電阻測試儀)是評估無源元件性能的關鍵工具。隨著智能制造與自動化測試需求的增長,傳統的手動測試
    的頭像 發表于 04-23 16:38 ?787次閱讀
    TH2822系列LCR<b class='flag-5'>測試</b>儀的<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>

    矢量信號發生器在工業自動化測試中的應用場景

    隨著工業自動化技術的飛速發展,對測試設備的要求也日益提高。矢量信號發生器作為一種先進的測試設備,憑借其強大的信號調制能力和廣泛的頻率覆蓋范圍,在工業自動化
    的頭像 發表于 03-26 14:10 ?930次閱讀