從零開始搭建一個簡單的ui自動化測試框架02(pytest+selenium+allure)

二、先搭一個架子

在我還是小白連py語法都不太熟悉的時候,經常在網上看關于自學ui自動化測試的博客,最熟悉的套路莫過于先給你介紹一下selenium的各個api,然后寫一套代碼去登陸微博或者百度什么的,但我今天不愿意這么寫,因為這樣的話,實際上并沒有什么卵用,他不能用到實際的項目里,今天我們來先搭一個架子。

搭架子先畫圖

我們首先來確定一下我們的項目架構圖,也即是我們打算怎么具體設計我們的項目,下面來聊一聊我設計時的思路。

其他的先不談,測試用例肯定是集中放到一個地方的,于是我創建了一個testcase的位置專門用來放用例,此時我們的架構圖是這樣的:
—————testcase

接下來我又想到,我們的用例可能需要按照要求集合執行,所以我又創建了一個testsuite的位置專門放集合的用例,于是架構圖多了一個:
—————testcase
—————testsuite

然后又想到,因為我們的測試用例需要支持單獨執行,所以必然需要重復的測試前和測試后的動作,先不談更多的動作,但是打開和關閉瀏覽器肯定是必須的,所以要想不在每個case里重復的寫這些動作,我們就需要一個測試用例的主類用以被case繼承,我把這個主類單獨的放置到了一個位置maincase,于是架構圖:
—————testcase
—————testsuite
—————maincase

我們再來想一下case里更具體的問題吧,比如說,我們可能需要一個(除開瀏覽器操作外的)工具集用以對case提供支持,包括發送Email,打開windows窗口選擇文件還有其他可能遇到的奇奇怪怪的事情,我們給這個部分留了一個util的位置,再來看看架構圖:
—————testcase
—————testsuite
—————maincase
—————util

再想想,如果我們發送email,那當然是要先生成測試報告,測試里遇到問題的話,最好可以有截圖用來看看當時為什么出錯了,那么我們各留一個位置給報告和截圖:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot

接下來,處理一下我們的元素存放位置,元素的管理是UI自動化里的重要點,如果不做到case和元素分離的話,維護用例將會變得非常困難,每次迭代只要元素變動了,你就得一個一個case的改,這里我們把元素集中到一個config里,稍后在具體編寫階段告訴大家如何存儲,這里先分一個config的位置給元素:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config

最后,如果我們希望我們的用例足夠簡潔的話,我們就應該把那些常用的操作封裝起來,這里的封裝分為兩個層面封裝,第一是對常用基礎操作的封裝,第二是對常用業務操作的封裝。

解釋一下的話,就是我們首先把基礎的操作封裝到一起,例如,尋找元素,如果我們想統一使用隱式等待(不明白的話后續篇章會介紹到)去查找元素的話,就需要把selenium里的find方法封裝一下,這種是對原先的基礎操作的封裝;
而比如說,我們寫case的時候發現,很多個case都會有一個同樣的跳轉路徑,都是通過點擊xx,再點擊xx到達這個頁面,我們就把這個操作路徑封裝了給我們的case使用,避免case里重復的寫這些路徑,這層封裝是對復用性高的業務邏輯操作的封裝。

我們給這兩層封裝留個位置operate:

—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config
—————operate

這樣目前來看,我們的架構圖大體就畫完了,剩下的如果有遺漏再開發過程里修復吧,我們看看最終的項目架構(目前還是空的):

img_628a4d64ad5a5764b4c224e5dc673da9.png
image

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279988.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DML語言DDL

DML(data manipulation language): 它們是SELECT、UPDATE、INSERT、DELETE,就象它的名字一樣,這4條命令是用來對數據庫里的數據進行操作的語言 。 DDL(data definition language): D…

什么是Adobe Lightroom,我需要它嗎?

Adobe Photoshop Lightroom confuses a lot of new photographers. It has Photoshop in the name, but it isn’t Photoshop? What gives? Adobe Photoshop Lightroom使許多新攝影師感到困惑。 它的名稱是Photoshop,但不是Photoshop嗎? 是什么賦予了&…

jquery中的serializeArray方法的使用

轉載于:https://blog.51cto.com/11871779/2359556

新冠病毒中招|第一天

感染新冠病毒后具體如何治療,需要根據感染者病情輕重情況而定,嚴重的要聽醫生的。昨天是我個人感染奧密克戎毒株第一天,今天跟大家分享一下我的情況。我昨天感覺渾身無力,也有點發燒37.9,我就吃了感冒藥睡了一上午&…

機器學習(一)—— 線性回歸

機器學習(一)—— 線性回歸 目錄 0. 回歸(Regression)的由來 1. 回歸關系 2. 線性回歸的整體思路 (1)根據數據提出假設模型 (2)求解參數 1)梯度下降法 2)正規…

Java EE啟示錄

前言 最近的這段時間一直在學習Java EE,剛剛完成了從0到1的蛻變,所以順便整理一下我所了解到的Java EE,給剛入門學習的新人一些頭緒,而所謂“啟示錄”,就是這個意思。 一.Java EE是什么? Java EE&#xff0…

又到年末“團建”!某企業員工吐槽:這真是一場噩夢……

這是頭哥侃碼的第270篇原創2022年即將結束,很多公司又到了一年一度的年末團建。前天晚上,之前的同事找我聊天,說他們公司因為最近疫情的原因,準備把年末“團建”放到春節后進行。但是計劃的時間是2月份的某個周末,并且…

天梯 L2 這是二叉搜索樹嗎?

L2-004 這是二叉搜索樹嗎? (25 分)一棵二叉搜索樹可被遞歸地定義為具有下列性質的二叉樹:對于任一結點, 其左子樹中所有結點的鍵值小于該結點的鍵值;其右子樹中所有結點的鍵值大于等于該結點的鍵值&#xf…

三星筆記本進入BIOS后找不到U盤啟動項/快速啟動鍵F12沒有反應

分析:BIOS開啟了 Fast Bios Mode 解決方法: 開機按F2進入BIOS設置,選擇Advanced菜單下Fast Bios Mode,設置為 Disabled,按F10鍵保存退出,重啟時按F12鍵即可進入快速啟動界面選擇。或按F2進入BIOS設置&#…

IP別名與多網卡綁定(RHEL5/RHEL6)

RHEL6的網絡管理與RHEL5的有比較大的改變。雖然在RHEL5、6中均安裝有NetworkManager,在RHEL5中2、3、4、5級別中默認是不啟用的。但在RHEL6中,默認是啟用的,NetworkManager會一直監控網卡狀態,修改網卡參數立即生效不用重啟服務。…

基于.NetCore開發博客項目 StarBlog - (25) 圖片接口與文件上傳

1前言上傳文件的接口設計有兩種風格,一種是整個項目只設置一個接口用來上傳,然后其他需要用到文件的地方,都只存一個引用ID;另一種是每個需要文件的地方單獨管理各自的文件。這倆各有優劣吧,本項目中選擇的是后者的風格…

pta7-7旅游規劃(dijkstra算法)

題目鏈接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114762387456 題意:給n給城市,m條公路,公路是雙向的,起點S,終點D,并給出每條公路連接的兩個city的編號以及路費…

context:annotation-config vs context:component-scan

<context:annotation-config> 用來注入已經在上下文注冊的bean&#xff0c;無論bean是定義在XML中還是被 package scanning。 <context:component-scan>僅scans packages 去注冊應用上線文中的Bean。 example&#xff1a; Lets start with a basic setup of three …

Cactiz中文版安裝使用

#----------------------------------------------------------# # > 紅色字體 -特指煮酒個人所見。加粗則為需要重點注意。 ## > 藍色加粗 -特指與本文相關人員&#xff0c;包括參與修正的朋友。 ## > 煮酒品茶 -Http://cwtea.blog.51cto.com # #----------…

如何在OS X中打開或關閉鼠標定位器

OS X 10.11 El Capitan includes a new “mouse locator” feature. If you lose your mouse pointer, just shake the mouse or move your finger on the touch pad vigorously, and the mouse pointer will temporarily grow very large so you can see it. OS X 10.11 El Ca…

微軟宣布 Win10 設備數突破8億,距離10億還遠嗎?

百度智能云 云生態狂歡季 熱門云產品1折起>>> 微軟高管 Yusuf Mehdi 昨天在推特發布了一條推文&#xff0c;宣布運行 Windows 10 的設備數已突破 8 億&#xff0c;比半年前增加了 1 億。 根據之前的報道&#xff0c;兩個月前 Windows 10 的全球市場份額才首次超越 W…

UI自動化web端框架path.py代碼

import os,sysBASE_PATH os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))sys.path.insert(0, BASE_PATH)# 配置文件CONF_PATH BASE_PATH os.path.sep conf os.path.sep config.json# 日志的路徑WEB_LOG_PATH BASE_PATH os.path.sep lo…

snapchat為什么_我的Snapchat朋友旁邊的表情符號是什么意思?

snapchat為什么Next to some of your Snapchat friends, you’ll see little emoji. 在您的某些Snapchat朋友旁邊&#xff0c;您會看到小的表情符號。 Each of these emoji has a specific meaning. Let’s look at what they are. 這些表情符號都有特定的含義。 讓我們看看它們…

暴力打表之hdu 2089

題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2089 有兩種方法&#xff1a; 1.數位DP算法 2.暴力打表——真是個好法子&#xff01;&#xff01;&#xff01; 接下來是注意點&#xff1a; 1.一般這種數組中的一個數減去一個數組的另一個數&#xff0c;sum[i…

最全的正則表達式大全

很多不太懂正則的朋友&#xff0c;在遇到需要用正則校驗數據時&#xff0c;往往是在網上去找很久&#xff0c;結果找來的還是不很符合要求。所以我最近把開發中常用的一些正則表達式整理了一下&#xff0c;在這里分享一下。給自己留個底&#xff0c;也給朋友們做個參考。 一、校…