導航:首頁 > 編程語言 > python數據驅動測試

python數據驅動測試

發布時間:2023-07-12 09:09:20

python - pytest

目錄

pytest是Python的單元測試框架,同自帶的unittest框架類似,但pytest框架使用起來更簡潔,效率更高。

pytest特點

安裝

測試

在測試之前要做的准備

我的演示腳本處於這樣一個的目錄中:

踩坑:你創建的pytest腳本名稱中不允許含有 . ,比如 1.簡單上手.py ,這樣會報錯。當然,可以這么寫 1-簡單上手.py

demo1.py :

上例中,當我們在執行(就像Python解釋器執行普通的Python腳本一樣)測試用例的時候, pytest.main(["-s", "demo1.py"]) 中的傳參需要是一個元組或者列表(我的pytest是5.2.2版本),之前的版本可能需要這么調用 pytest.main("-s demo1.py") ,傳的參數是str的形式,至於你使用哪種,取決於報不報錯:

遇到上述報錯,就是參數需要一個列表或者元組的形式,而我們使用的是str形式。

上述代碼正確的執行結果是這樣的:

大致的信息就是告訴我們:

pytest.main(["-s", "demo1.py"])參數說明

除了上述的函數這種寫法,也可以有用例類的寫法:

用法跟unittest差不多,類名要以 Test 開頭,並且其中的用例方法也要以 test 開頭,然後執行也一樣。

執行結果:

那麼,你這個時候可能會問,我記得unittest中有setup和teardown的方法,難道pytest中沒有嘛?你怎麼提都不提?穩住,答案是有的。

接下來,我們來研究一下pytest中的setup和teardown的用法。

我們知道,在unittest中,setup和teardown可以在每個用例前後執行,也可以在所有的用例集執行前後執行。那麼在pytest中,有以下幾種情況:

來一一看看各自的用法。

模塊級別setup_mole/teardown_mole

執行結果:

類級別的setup_class/teardown_class

執行結果:

類中方法級別的setup_method/teardown_method

執行結果:

函數級別的setup_function/teardown_function

執行結果:

小結

該腳本有多種運行方式,如果處於PyCharm環境,可以使用右鍵或者點擊運行按鈕運行,也就是在pytest中的主函數中運行:

也可以在命令行中運行:

這種方式,跟使用Python解釋器執行Python腳本沒有什麼兩樣。也可以如下面這么執行:

當然,還有一種是使用配置文件運行,來看看怎麼用。

在項目的根目錄下,我們可以建立一個 pytest.ini 文件,在這個文件中,我們可以實現相關的配置:

那這個配置文件中的各項都是什麼意思呢?

首先, pytest.ini 文件必須位於項目的根目錄,而且也必須叫做 pytest.ini 。

其他的參數:

OK,來個示例。

首先,(詳細目錄參考開頭的目錄結構)在 scripts/test_case_01.py 中:

在 scripts/test_case_dir1/test_case02.py 中:

那麼,在不同的目錄或者文件中,共有5個用例將被執行,而結果則是兩個失敗三個成功。來執行驗證一下,因為有了配置文件,我們在終端中(前提是在項目的根目錄),直接輸入 pytest 即可。

由執行結果可以發現, 2 failed, 3 passed ,跟我們的預期一致。

後續執行相關配置都來自配置文件,如果更改,會有相應說明,終端都是直接使用 pytest 執行。

我們知道在unittest中,跳過用例可以用 skip ,那麼這同樣是適用於pytest。

來看怎麼使用:

跳過用例,我們使用 @pytest.mark.skipif(condition, reason) :

然後將它裝飾在需要被跳過用例的的函數上面。

效果如下:

上例執行結果相對詳細,因為我們在配置文件中為 addopts 增加了 -v ,之前的示例結果中,沒有加!
另外,此時,在輸出的控制台中, 還無法列印出 reason 信息,如果需要列印,則可以在配置文件中的 addopts 參數的 -s 變為 -rs :

如果我們事先知道測試函數會執行失敗,但又不想直接跳過,而是希望顯示的提示。

Pytest 使用 pytest.mark.xfail 實現預見錯誤功能::

需要掌握的必傳參數的是:

那麼關於預期失敗的幾種情況需要了解一下:

結果如下:

pytest 使用 x 表示預見的失敗(XFAIL)。

如果預見的是失敗,但實際運行測試卻成功通過,pytest 使用 X 進行標記(XPASS)。

而在預期失敗的兩種情況中,我們不希望出現預期失敗,結果卻執行成功了的情況出現,因為跟我們想的不一樣嘛,我預期這條用例失敗,那這條用例就應該執行失敗才對,你雖然執行成功了,但跟我想的不一樣,你照樣是失敗的!

所以,我們需要將預期失敗,結果卻執行成功了的用例標記為執行失敗,可以在 pytest.ini 文件中,加入:

這樣就就把上述的情況標記為執行失敗了。

pytest身為強大的單元測試框架,那麼同樣支持DDT數據驅動測試的概念。也就是當對一個測試函數進行測試時,通常會給函數傳遞多組參數。比如測試賬號登陸,我們需要模擬各種千奇百怪的賬號密碼。

當然,我們可以把這些參數寫在測試函數內部進行遍歷。不過雖然參數眾多,但仍然是一個測試,當某組參數導致斷言失敗,測試也就終止了。

通過異常捕獲,我們可以保證程所有參數完整執行,但要分析測試結果就需要做不少額外的工作。

在 pytest 中,我們有更好的解決方法,就是參數化測試,即每組參數都獨立執行一次測試。使用的工具就是 pytest.mark.parametrize(argnames, argvalues) 。

使用就是以裝飾器的形式使用。

只有一個參數的測試用例

來看(重要部分)結果::

可以看到,列表內的每個手機號,都是一條測試用例。

多個參數的測試用例

(重要部分)結果:

可以看到,每一個手機號與每一個驗證碼都組合一起執行了,這樣就執行了4次。那麼如果有很多個組合的話,用例數將會更多。我們希望手機號與驗證碼一一對應組合,也就是只執行兩次,怎麼搞呢?

在多參數情況下,多個參數名是以 , 分割的字元串。參數值是列表嵌套的形式組成的。

固件(Fixture)是一些函數,pytest 會在執行測試函數之前(或之後)載入運行它們,也稱測試夾具。

我們可以利用固件做任何事情,其中最常見的可能就是資料庫的初始連接和最後關閉操作。

Pytest 使用 pytest.fixture() 定義固件,下面是最簡單的固件,訪問主頁前必須先登錄:

結果:

在之前的示例中,你可能會覺得,這跟之前的setup和teardown的功能也類似呀,但是,fixture相對於setup和teardown來說更靈活。pytest通過 scope 參數來控制固件的使用范圍,也就是作用域。

比如之前的login固件,可以指定它的作用域:

很多時候需要在測試前進行預處理(如新建資料庫連接),並在測試完成進行清理(關閉資料庫連接)。

當有大量重復的這類操作,最佳實踐是使用固件來自動化所有預處理和後處理。

Pytest 使用 yield 關鍵詞將固件分為兩部分, yield 之前的代碼屬於預處理,會在測試前執行; yield 之後的代碼屬於後處理,將在測試完成後執行。

以下測試模擬資料庫查詢,使用固件來模擬資料庫的連接關閉:

結果:

可以看到在兩個測試用例執行前後都有預處理和後處理。

pytest中還有非常多的插件供我們使用,我們來介紹幾個常用的。

先來看一個重要的,那就是生成測試用例報告。

想要生成測試報告,首先要有下載,才能使用。

下載

如果下載失敗,可以使用PyCharm下載,怎麼用PyCharm下載這里無需多言了吧。

使用

在配置文件中,添加參數:

效果很不錯吧!

沒完,看我大招

Allure框架是一個靈活的輕量級多語言測試報告工具,它不僅以web的方式展示了簡潔的測試結果,而且允許參與開發過程的每個人從日常執行的測試中最大限度的提取有用信息。
從開發人員(dev,developer)和質量保證人員(QA,Quality Assurance)的角度來看,Allure報告簡化了常見缺陷的統計:失敗的測試可以分為bug和被中斷的測試,還可以配置日誌、步驟、fixture、附件、計時、執行 歷史 以及與TMS和BUG管理系統集成,所以,通過以上配置,所有負責的開發人員和測試人員可以盡可能的掌握測試信息。
從管理者的角度來看,Allure提供了一個清晰的「大圖」,其中包括已覆蓋的特性、缺陷聚集的位置、執行時間軸的外觀以及許多其他方便的事情。allure的模塊化和可擴展性保證了我們總是能夠對某些東西進行微調。

少扯點,來看看怎麼使用。

Python的pytest中allure下載

但由於這個 allure-pytest 插件生成的測試報告不是 html 類型的,我們還需要使用allure工具再「加工」一下。所以說,我們還需要下載這個allure工具。

allure工具下載

在現在allure工具之前,它依賴Java環境,我們還需要先配置Java環境。

注意,如果你的電腦已經有了Java環境,就無需重新配置了。

配置完了Java環境,我們再來下載allure工具,我這里直接給出了網路雲盤鏈接,你也可以去其他鏈接中自行下載:

下載並解壓好了allure工具包之後,還需要將allure包內的 bin 目錄添加到系統的環境變數中。

完事後打開你的終端測試:

返回了版本號說明安裝成功。

使用

一般使用allure要經歷幾個步驟:

來看配置 pytest.ini :

就是 --alluredir ./report/result 參數。

在終端中輸入 pytest 正常執行測試用例即可:

執行完畢後,在項目的根目下,會自動生成一個 report 目錄,這個目錄下有:

接下來需要使用allure工具來生成HTML報告。

此時我們在終端(如果是windows平台,就是cmd),路徑是項目的根目錄,執行下面的命令。

PS:我在pycharm中的terminal輸入allure提示'allure' 不是內部或外部命令,也不是可運行的程序或批處理文件。但windows的終端沒有問題。

命令的意思是,根據 reportresult 目錄中的數據(這些數據是運行pytest後產生的)。在 report 目錄下新建一個 allure_html 目錄,而這個目錄內有 index.html 才是最終的allure版本的HTML報告;如果你是重復執行的話,使用 --clean 清除之前的報告。

結果很漂亮:

allure open
默認的,allure報告需要HTTP伺服器來打開,一般我們可以通過pycharm來完成,另外一種情況就是通過allure自帶的open命令來完成。

allure的其他用法
當然,故事還是沒有完!在使用allure生成報告的時候,在編寫用例階段,還可以有一些參數可以使用:

allure.title與allure.description

feature和story

由上圖可以看到,不同的用例被分為不同的功能中。

allure.severity

allure.severity 用來標識測試用例或者測試類的級別,分為blocker,critical,normal,minor,trivial5個級別。

severity的默認級別是normal,所以上面的用例5可以不添加裝飾器了。

allure.dynamic

在之前,用例的執行順序是從上到下依次執行:

正如上例的執行順序是 3 1 2 。

現在,來看看我們如何手動控制多個用例的執行順序,這里也依賴一個插件。

下載

使用

手動控制用例執行順序的方法是在給各用例添加一個裝飾器:

那麼, 現在的執行順序是 2 1 3 ,按照order指定的排序執行的。

如果有人較勁傳個0或者負數啥的,那麼它們的排序關系應該是這樣的:

失敗重試意思是指定某個用例執行失敗可以重新運行。

下載

使用

需要在 pytest.ini 文件中, 配置:

給 addopts 欄位新增(其他原有保持不變) --reruns=3 欄位,這樣如果有用例執行失敗,則再次執行,嘗試3次。

來看示例:

結果:

我們也可以從用例報告中看出重試的結果:

上面演示了用例失敗了,然後重新執行多少次都沒有成功,這是一種情況。

接下來,來看另一種情況,那就是用例執行失敗,重新執行次數內通過了,那麼剩餘的重新執行的次數將不再執行。

通過 random 模塊幫助我們演示出在某次執行中出現失敗的情況,而在重新執行的時候,會出現成功的情況,看結果:

可以看到,用例 02 重新執行了一次就成功了,剩餘的兩次執行就終止了。

一條一條用例的執行,肯定會很慢,來看如何並發的執行測試用例,當然這需要相應的插件。

下載

使用

在配置文件中添加:

就是這個 -n=auto :

並發的配置可以寫在配置文件中,然後其他正常的執行用例腳本即可。另外一種就是在終端中指定,先來看示例:

結果:

pytest-sugar 改變了 pytest 的默認外觀,添加了一個進度條,並立即顯示失敗的測試。它不需要配置,只需 下載插件即可,用 pytest 運行測試,來享受更漂亮、更有用的輸出。

下載

其他照舊執行用例即可。

pytest-cov 在 pytest 中增加了覆蓋率支持,來顯示哪些代碼行已經測試過,哪些還沒有。它還將包括項目的測試覆蓋率。

下載

使用

在配置文件中:

也就是配置 --cov=./scripts ,這樣,它就會統計所有 scripts 目錄下所有符合規則的腳本的測試覆蓋率。

執行的話,就照常執行就行。

結果:

更多插件參考:https://zhuanlan.hu.com/p/50317866

有的時候,在 pytest.ini 中配置了 pytest-html 和 allure 插件之後,執行後報錯:

出現了這個報錯,檢查你配置的解釋器中是否存在 pytest-html 和 allure-pytest 這兩個模塊。如果是使用的pycharm ide,那麼你除了檢查settings中的解釋器配置之外,還需要保證運行腳本的編輯器配置是否跟settings中配置一致。

Ⅱ 軟體測試面試題:WEB+網路|介面測試|性能測試|自動化測試


1. http代碼表,常考題目

404:找不到資源

500:伺服器內部錯誤,無法完成請求。

501:伺服器不支持請求的功能,無法完成請求。

502:充當網關或代理的伺服器,從遠端伺服器接收到了一個無效的請求。

301:永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI,今後任何新的請求都應使用新的URI代替。

302:臨時移動。與301類似。但資源只是臨時被移動,客戶端應繼續使用原有URI。

200:成功。

2. TCP/IP四層網路模型

鏈路層、網路層、傳輸層、應用層。

3. TCP/UDP區別?

TCP: 可靠傳輸協議,需要三次握手連接,有確認重傳機制,特點是可靠、准確、有擁塞控制,缺點就是比較慢,傳輸量比較小,適用於升級、下載;一句話:TCP是可靠的傳輸。

UDP: 不可靠傳輸協議,面向非連接的協議,優點是傳輸量大、速度快,缺點是已丟失、沒有擁塞控制,適用於直播、視頻等。一句話:UDP是不可靠的傳輸。

4. html css js運行的先後順序是什麼?

界面載入的時候先載入html在載入css最後載入js

5. session和cookie的區別是什麼

1. session存放在伺服器端用來校驗客戶端的身份

2. cookie存放在客戶端,每次從客戶端往伺服器發請求時,將cookie帶到伺服器端,用來校驗客戶端的身份



1. 怎麼用JMeter測試介面?

如果使用JMeter進行介面測試:

1) 測試前了解需求,根據介面規格說明書梳理業務;

2) 接下來設計用例,分析介面的入參和出參,分清楚有哪些有效輸入和無效輸入,設計用例(原則:用最少的用例覆蓋所有有效輸入,針對每一個無效的輸入設計一個測試用例,如果有錯誤碼沒有覆蓋到,還要對每個未覆蓋的錯誤碼分別設計一個用例);

3) 准備測試數據,比如:測試所需的賬號、密碼、key 等信息;

4) 打開JMeter,創建一個線程組,根據介面類型,填寫好對應的介面地址和請求方式等;

5) 參數化配置,添加配置元件CSV Data Set Config,定義變數,並准備CSV格式的數據,變數的引用用${變數名}的格式;

6) 添加斷言來判斷測試結果的正確性,用得最多的是響應斷言;

7) 添加監聽器,比如查看結果樹,對測試結果進行監聽;

8) 運行測試用例;

9) 查看監聽器結果,來判斷用例的執行是成功還是失敗,針對失敗的用例,分析其失敗原因;

10) 針對測試中發現的問題,給開發提單,直到問題最終解決。

11) 最後輸出測試報告。

2. 怎麼用Postman測試介面?

如果使用Postman測試介面:

其中1,2,3點相同,工具使用方面則比JMeter跟簡單,工具的主要的步驟是添加對應的請求、填寫主機URL及入參、添加測試套、運行測試套、分析結果出報告。

3. 在JMeter上如何把上一個請求的結果作為下一個請求的參數?

使用正則表達式提取器提取上一個請求的響應中的信息,保存一個引用名稱比如abc,在下一個請求的參數中,用${abc}的格式來引用提取的結果。

常用的正則表達式格式:(.+?),其中.表示匹配任意字元串,+表示只匹配一次,?表示匹配到就停下來。



一般是我們功能測試完成最後兩三天時間測試性能。

1、先是分析需求計算出並發數,TPS,響應時間和 CPU,內存,硬碟和網路IO這些指標。

2、制定測試方案,主要包括環境,計劃和具體測試那些場景(如可靠性,並發,負載,壓力測試等)

3、根據場景用Badboy錄制腳本,導出為JMeter工具支持的腳本。

4、用JMeter工具打開腳本,進行腳本調試,加一些斷言,監聽器,參數化等。

5、接下來執行性能測試,然後主要收集監聽器和收集伺服器CPU,內存,硬碟和網路IO等分析是否滿足需求,如果滿足就輸出性能測試報告。

6、如果指標不能滿足,反饋給開發進行調優。調優後繼續測試,一直到滿足需求後最終輸出測試報告。



1. Python怎麼定義一個函數?

你可以定義一個由自己想要功能的函數,以下是簡單的規則:

1) 函數代碼塊以def關鍵詞開頭,後接函數標識符名稱和圓括弧()。

2) 任何傳入參數和自變數必須放在圓括弧中間。圓括弧之間可以用於定義參數。

3) 函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。

4) 函數內容以冒號起始,並且縮進

5) return[表達式]結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回None


2 Python切片

3. Python上用過什麼庫/模塊?

webdriver:定位和操作元素

time:設置等待時間

ActionChains:動作鏈,完成滑鼠的相關操作

Keys:鍵盤的相關操作

WebDriverWait:設置顯式等待

Expect_Conditions:針對單個元素,設置顯式等待的場景

PIL:截圖

Select:下拉選擇框的操作

unittest python:自帶的單元測試框架

HTMLTestRunner:運行腳本,生成報告

ddt:實現數據驅動測試,行為和數據分離

4. 你做過自動化測試嗎?

我在上一份工作中,公司去年下半年也開始規劃做Web 自動化,採用Python作為開發語言,通過Selenium WebDriver定位和操作頁面元素,自動化框架用的是unittest。我主要負責寫測試腳本。

假設一個測試團隊有5個人:1資深(測試經理)+2~3個中級(自動化+手動)+1 個初級(手動)

5. 使用什麼工具進行的自動化測試

使用的工具是Selenium(Web自動化工具)

6. 用的什麼編程語言

用的Python

7. Selenium 用的是哪個版本的的?Python用的是哪個版本的?

用的是selenium 3.11.0和Python2.7.10

8. Selenium的工作原理?

1)對html元素定位

2)模擬對第一步定位到的元素進行點擊、輸入、選擇等操作一句話:定位元素,操作元素。

9. 元素定位方法有哪些?

要點:8種定位方法

1) 根據元素的屬性值定位,比如 id、name、class、標簽名、鏈接文字和部分鏈接文字;

2) 根據CSS選擇器定位;

3) 根據 XPath 定位;

10. 子頁面里的元素怎麼定位?

先切換到框架里,然後再定位,用switch_to_frame函數根據子頁面id或name,切換到子頁面;定位完了如果要再定位主頁面的元素,要用switch_to_default_content 函數先返回主頁面。

11. 怎麼定位alert彈窗?或者這樣問:怎麼處理JS原生窗口?

要點:主要涉及點擊彈窗確認按鈕、強行關閉彈窗、獲取彈窗中的文字等操作。

1) 點擊彈窗的確定按鈕,用如下函數:

driver.switch_to_alert().accept()

2) 強行關閉,點擊右上角的叉叉,用如下函數:

driver.switch_to_alert().dismiss()

3) 獲取彈窗里的文字,用如下函數:

driver.switch_to_alert().text

12. 怎麼運行自動化用例並生成測試報告?

以unittest為例,我通常的做法是把用例載入到測試套中,做成一個腳本,在命令窗口下運行腳本,報告的生成用第三方模塊HTML TestRunner來生成。

13. 怎麼定位/操作圖片中的驗證碼?

用tesseract OCR引擎處理圖片中的驗證碼,步驟:

(1)對整個屏幕截屏,保存成png格式的圖片;

(2)在截取的圖片中定位驗證碼圖片的位置坐標;

(3)根據坐標對驗證碼截圖;

(4)在圖片中提取驗證碼,輸入到輸入框。

Ⅲ Python操作MySQL的驅動有哪些

使用Python操作MySQL資料庫的方式(驅動)有很多種,比如:PyMySQL、MySQLdb、mysqlclient、SQLAlchemy等等

MySQLdb
MySQLdb是 Python 連接 MySQL 最流行的一個驅動,很多框架都也是基於此庫進行開發,遺憾的是它只支持 Python2.x,它是基於C開發的庫,和Windows 平台的兼容性不友好,現在基本不推薦使用,取代的是它的衍生版本。

mysqlclient
由於 MySQLdb 年久失修,後來出現了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同時支持 Python3.x,是 Django ORM的依賴工具,如果你想使用原生 SQL 來操作資料庫,那麼推薦此驅動。

PyMySQL
PyMySQL是純 Python 實現的驅動,速度上比不上 MySQLdb,最大的特點可能就是它的安裝方式沒那麼繁瑣,同時也兼容 MySQLdb。

SQLAlchemy
SQLAlchemy是一種既支持原生 SQL,又支持 ORM 的工具,它非常接近 Java 中的 Hibernate 框架。
作為一個測試人員,資料庫的操作也必須是要掌握的,如果想系統的學習介面測試相關的技術,可以了解一下黑馬程序員的軟體測試課程,裡面講的非常詳細。

Ⅳ python自動化測試需要學什麼

掌握自動化測試技術並能靈活應對不同的測試需求,Python自動化測試學習內容:

1-1 自動化測試基礎

自動化測試概述

工具介紹及安裝

常用命令

1-2 自動化測試環境搭建

Appium介紹及安裝

Appium Capability配置介紹

Appium界面介紹

Appium簡單使用

1-3 Appium 基礎運用

1-4 yaml配置文件使用

1-5 單元測試框架unittest使用

Ⅳ python3實現自動化測試 [基於python語言實現自動化測試的研究]

[摘 要]自動化測試近年來的技術已經越來越成熟,在某些方面有著不可替代的作用,例如在性能測試,壓力測試中,自動化測試可以模擬成千上萬個用戶對目標程序進行測試。本文通過對大型實際項目的分析研究,分析針對某一產品的自動化測試框架。然後討論怎樣用python實現自動化測試。
[關鍵詞]測試技術手工測試自動化測試python腳本
[中圖分類號]TP3[文獻標識碼]A[文章編號]1007-9416(2010)03-0088-01

地添加測試用例,為測試用例提供公用函數,執行測試用例,發送測試結果等功能。
1 自動化測試的重要概念
檢查點(CheckPoint):將特定屬性的當前數據與期望數據進行比較的地方,用於判定被測試程序的功能是否正確。
成本收益比:並不是所有的測試都適合自動化測試,衡量一個用例是否適合自動化測試一個很重要的參考是國際上流行的自動化測試成本收益比,即是p=k*n/c1+c2。各個參數的意義下:
K=手工執行自動化測試案例所花費的時間成本。
N=自動化測試案例執行的次數
C1=花費在自動化測試前期的(時間成本+人力成本+金錢成本)
C2=花費在自動化測試後期的(時間成本+人力成本+金錢成本)
二八定律:1897年義大利經濟學家帕列托發現的二八定律在軟體行業同樣適用,而可以給我們很多啟發,指導我們的軟體開發和測試。80%的用戶經常使用的是20%的軟體功能。在軟體測試中,80%的bug是集中在20%的軟體模塊中,對於自動化測試來說,找出這20%的測試用例是至關重要的。
2 自動化測試的執行步驟
每次腳本都是從一個統一的文件開始執行的,就是如上的Start.py。這樣做的好處是可以把每個腳本都需要處理的工作放到一個文件中去執行,例如收集一些配置信息,讀取命令行參數。以這樣統一的處理風格為腳本的可讀性提供了保證,也為簡化了測試腳本的編寫,不用每次都要處理一些基本的事務。
啟動文件Start.py首先會讀取命行參數,如pthon Start.py -s FileMenu.suite -t FileNew
通過python的內置函數sys.argv就可以讀取命令行參數吵肢,非常方便。讀取到命令行參數後,在Start.py內部可以判斷命令行的格式是否符合我們的格式,如測試人員不小心把-s 寫成了-z 這樣就要退出測試執行。
如果輸入的格式是正確的,Start.py 負責在特定的目錄下尋找特定的Suite文件和Testcase。Suite文件和Testcase的格式會在下邊的具體實例中作介紹。
找到特定的Testcase後就可以執行測試用例,根據檢查點的通過或失敗發送測試報告,該報告會以網頁的形式顯示,方便測試人員和開發人員的查找調試。
3 用python實現GUI測試
圖形用戶界面(GUI) 就是使用圖象,輸入的文字,帶圖標的計算機界面,取而代之了許多鍵盤的功能。GUI可以讓用戶通過圖標和滑鼠與計算機進行交互,而不是單調地在命令行中輸入文本進行操作。設計良好的圖形用戶界面可以使用戶從命令中解放出來。
GUI測試主要包括兩個方面:一是純GUI測試,主要關注應用程序上GUI組件是否符合規范或是用戶的使用習慣,二是功能測試,主要是檢驗和驗證系統是否實現了系統的業務需求,旨在驗證系統的業務實現能力。但事實上兩者不是完全獨立的,一方面GUI的測試必定要觸發功能,另一方面,功能測試也一定要通過GUI將搜碰洞事件傳遞給後台服務。
3.1 編寫測試用例
ID 466540 :: Test CaseGeneral UI File Menu
Version 2
世枯PriorityP1
Summary:Verify File New window
Steps
SelectFile -> New
Expected Results
1. The VM creation window should open.
Keywords: i18n
Requirements : None
Created on 09/22/2008 20:58:23by wangw
Last modified on04/17/2009 00:20:53by marian
3.2 測試用例分析
以上是一個完整測試用例, 該測試用例包括:
測試ID 466540 , 有了測試ID就可以在測試人員提交bug後,QA或開發人員通過ID找到這個測試用例。還有一個更大的用處就是,在自動個腳本生成測試報告後,可以根據測試ID把該測試用例顯示在測試報告中,以供測試人員和開發人員調試。
測試名稱,根據測試名稱應該可以很快了解測試用例的內容,所以好的測試名稱也是非常重要的。
測試用例的版本(Version)。
測試優先順序(Priority),測試優先順序也是一個很重要的參數,因為大型項目都要有很多測試用例要執行。只有明確測試優先順序才能確保重要的測試用例得以及時進行,保證軟體質量。
測試用例概述(summary),幫助測試執行人員了解該測試用例的用測的功能。
測試步驟,描述測試人員或是自動化腳本每一步是怎樣操作的,例如本例告訴測試人員選擇菜單Fie,然後選擇菜單項New。
預期結果(Expected Results),說明經過以上測試步驟,期望程序運行出現的結果。
4 結語
本文在明確軟體測試理論的基礎上,對自動化測試做了重點闡述,通過實際項目的自動化測試分析,有些測試用例特別適合用自動化測試。例如GUI測試中,用些是要驗證界面元素是否顯示正常。如果是腳本就可以准確無誤地很快驗證完畢,而用人工驗證不僅容易出錯而且費時間。由於時間和硬體條件有限,本論文規避了許多問題,所以仍有許多工作需要完成。例如:做好腳本的復用,使測試腳本不斷積累。及研究怎樣在測試工具和自己搭建框架中尋找平衡等。

[參考文獻]
[1] 張克東.《軟體工程與軟體測試自動化教程》.北京:電子工業出版社,2002.
[2] 朱菊,王志堅,楊雪.《基於數據驅動的軟體自動化測試框架》[J]計算機技術測試與發展,2006.
[3] 馬瑞芳,王會燃.《計算機軟體測試方法的研究》.小型微型計算機系統,2003.
[4] 朱鴻,金凌紫.《軟體質量保障和測試》[M].北京:電子科學出版社,1997.
本文為全文原貌 未安裝PDF瀏覽器用戶請先下載安裝 原版全文

Ⅵ 怎麼用python做自動化測試

這里以web自動化測試為例,簡單介紹一下如何使用python進行web自動化測試,主要用到selenium這個框架,實驗環境win10+python3.6,主要內容如下:

1.首先,安裝selenium框架,這個直接在cmd窗口輸入命令「pipinstallselenium」就行,如下,安裝非常快:

2.安裝完成後,還需要安裝瀏覽器驅動程序,不然直接運行程序會報錯,以谷歌瀏覽器chrome為例,需要下載chromedriver驅動程序,如下,這里chromedriver的版本必須要與自己平台瀏覽器的版本匹配:

下載完成後,是一個zip壓縮包,裡面就一個chromedriver.exe文件,這里需要將這個文件復制到python安裝目錄下,如下:

3.最後,我們就可以進行selenium框架測試了,測試代碼如下,非常簡單,創建一個webdriver,如果能正常打開對應網頁,則說明selenium安裝成功:

之後就可以直接定位相關元攜余素,進行web自動化測試了,主要方法如下(共有8種),辯洞滾分別是id、name、classname、tagname、linktext、partiallinktext、xpath和cssselector,這里可以自行測試,相關資料非常豐富:

至此,我們就完成了pythonweb自動化測試框架selenium的安裝和簡單使用。總的來說,整個過程非常簡單,只要你有一定的python基礎,熟悉一下上面的安裝過程,很快就能搭建好本地selenium自動化測試框架,網上也顫芹有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

閱讀全文

與python數據驅動測試相關的資料

熱點內容
51單片機歷史 瀏覽:888
怎樣減小pdf文件大小 瀏覽:31
和彩雲zip解壓 瀏覽:725
linux查看線程狀態 瀏覽:457
怎麼起文件夾名稱 瀏覽:49
北京交大編譯原理 瀏覽:982
linux執行java腳本 瀏覽:587
全能掃描加密文檔忘記密碼怎麼辦 瀏覽:75
極品飛車ol安卓版為什麼要關服 瀏覽:273
學生伺服器怎麼選 瀏覽:462
mac系統本身編譯器 瀏覽:149
頭條app如何設置橫屏模式 瀏覽:359
clion怎麼使用終端編譯 瀏覽:766
伺服器地址部署到公網 瀏覽:492
新桑塔納安卓大屏導航怎麼拆 瀏覽:382
程序員送給女友的禮物 瀏覽:432
ftp命令行查看文件數量 瀏覽:506
linux查看設備的命令 瀏覽:837
pythongolang學哪個 瀏覽:351
金蝶加密鎖驅動下載 瀏覽:300