前言
本文將使用Python Behave與Selenium,和同學(xué)們一起認(rèn)識自動化測試,并附上完整的實踐教程。
項目源碼已上傳:CSDN 郭麻花 Azure Repo python-behave-selenium
核心概念?
1. 什么是E2E Test
E2E即End-to-end,意思是從頭到尾的系統(tǒng)功能測試。它通過編寫自動化測試腳本,完全從用戶的角度出發(fā),驗證系統(tǒng)功能的正確性。
如下圖所示,E2E Test相較于Unit Test等等,實現(xiàn)起來需要更多的時間和成本。
2.?Python Behave?
Behave是一個強大且開源的Python BDD測試框架,完全支持Gherkin(Feature測試語言)。與我前面介紹過的.NET Specflow測試框架相似,旨在通過自然語言編寫測試用例并實現(xiàn)自動化測試。
3.?Selenium
Webdriver是一種與實現(xiàn)無關(guān)的瀏覽器協(xié)議,每個瀏覽器都將提供自己的驅(qū)動程序,作為WebDriver協(xié)議的實現(xiàn)。而外部則可以通過驅(qū)動程序提供的接口,來實現(xiàn)自動化操作瀏覽器。
Selenium 框架通過整合Webdriver實現(xiàn), 允許用戶可以無差別的使用不同的瀏覽器后端, 實現(xiàn)跨瀏覽器和跨平臺自動化。并且Selenium框架支持Java,Python,C#等多種語言實現(xiàn)。
E2E Test 實踐指南
1. 你是否需要E2E Test
自動化測試需要整個團(tuán)隊投入大量的精力。開發(fā)人員熟悉每個頁面實現(xiàn),他們需要協(xié)助測試人員抓取頁面元素,實現(xiàn)某些步驟等;而測試人員則需要與產(chǎn)品等需求方共同編寫大量的,基于用戶視角的測試用例,并與開發(fā)人員一同實現(xiàn)自動化測試步驟。
并且,E2E Test需要干凈的測試環(huán)境,至少不能影響每次測試用例的執(zhí)行。這要求我們的軟件系統(tǒng)必須具備快速部署,復(fù)制的能力。
基于云原生架構(gòu)的系統(tǒng)是最好的:[GitOps]微服務(wù)版本控制:使用ArgoCD 部署Grafana Loki_郭麻花的博客
2.? 什么時候需要自動化測試
在產(chǎn)品趨于完善的時候,可以開始E2E Test。在項目早期階段,推薦使用Unit Test,Integration Test,System Test等來保證軟件質(zhì)量。
E2E Test并不是萬能的,也不是要求所有的步驟都必須按照用戶角度自動化完成:不鼓勵的行為 | Selenium
Python Behave與Selenium
好了,介紹完E2E Test的概念與場景之后,我們來看一下E2E Test的實現(xiàn)過程。環(huán)境準(zhǔn)備:Python,pip命令;安裝behave與selenium。
Behave
BDD測試的概念我這里不再贅述,了解過.NET Specflow BDD Framework - CSDN 郭麻花的博客的朋友會很容易學(xué)習(xí)Behave框架。
Behave的使用非常簡單,我這里介紹下要點:
1. 首先你需要熟悉feature語言:?Gherkin和step實現(xiàn),不懂看這里blog.py - Repos (azure.com)
2. 結(jié)合上面鏈接里的代碼,可以看到Behave中的context表示一個貫穿整個測試過程的對象,你可以將步驟中得到的對象或者變量,放入context中,并傳遞給后面的step。
3.?Behave提供了一些Hook函數(shù),如before_feature,after_scenario()等,我們可以通過重寫這些Hook方法,在scenario或者feature執(zhí)行前后,做一些準(zhǔn)備或者收尾的工作。Hook函數(shù)的使用請看這里:environment.py - Repos (azure.com)
更多Hook函數(shù)看這里:Context Attributes — behave documentation
?4. Tag以及Tag的使用看這里:Tag in feature?& Tag in running
Selenium
Selenium的使用也是非常簡單。同樣的,我概括下要點:
- Selenium支持Edge,chrome,firefox,ie,Safari?等多種瀏覽器。
- Selenium支持XPATH, CSS Selector,Id等多種方式查找元素。selectors-example
- Selenium提供點擊,輸入,清除,提交和選擇,5種基礎(chǔ)操作控制頁面元素。
- Selenium可以等待元素達(dá)到期望狀態(tài)。
最重要的是代碼設(shè)計。例如,我們需要等待頁面某個按鈕enable,或者等待某段文字刷新出來,這里一定不要使用sleep的方式來等待,而要用Wait element state in selenium
的方式來實現(xiàn)優(yōu)雅等待,一旦元素達(dá)到期望狀態(tài),程序會立刻往下執(zhí)行。
執(zhí)行Behave測試
可以通過VS Code進(jìn)行調(diào)試behave 測試用例,像我這樣:launch.json - Repos (azure.com)
或者直接使用behave命令來運行:?behave test\features\blog_test01.feature
我這里為大家實現(xiàn)了一個簡單的feature:通過百度查找“CSDN 郭麻花”,并判斷他置頂?shù)牟┛蛿?shù)量是否為“3”。
歡迎大家下載調(diào)試:python-behave-selenium - Repos (azure.com)
@fixture.edge
Feature: Blog test 01
Scenario: I have three pinned blogs
Given I open "www.baidu.com"
When I search "CSDN 郭麻花"
Then I click the first of results
When I select the "文章" selection
Then I can see "3" blogs have been pinned
文章來源:http://www.zghlxwxcb.cn/news/detail-705225.html
總結(jié)
好的,關(guān)于E2E Test以及Python Behave與Selenium的介紹暫時就到這里。文章來源地址http://www.zghlxwxcb.cn/news/detail-705225.html
到了這里,關(guān)于[E2E Test] Python Behave Selenium 一文學(xué)會自動化測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!