第一個Pytest UI自動化測試實戰(zhàn)實例

前言

明天就放假了出吹,4天小長假,是不是很開心辙喂!也許很多人要回老家?guī)图依锓N地捶牢,干農(nóng)活鸠珠。其實能陪陪家里人,幫忙干點農(nóng)活還是挺開心的秋麸,希望大家有個愉快的假期渐排!廢話不多說哈,今天再來說說pytest吧竹勉,經(jīng)過幾周的時間學習飞盆,有收獲也有疑惑,總之最后還是搞個小項目出來證明自己的努力不沒有白費

環(huán)境準備

序號庫/插件/工具安裝命令

1確保您已經(jīng)安裝了python3.x?

2配置python3+pycharm+selenium2開發(fā)環(huán)境?

3安裝pytest庫:pip install pytest

4安裝pytest -html 報告插件:pip install pytest-html

5安裝pypiwin32庫(用來模擬按鍵):pip install pypiwin32

6安裝openpyxl解析excel文件庫:pip install openpyxl

7安裝yagmail發(fā)送報告庫:pip install yagmail

8確保已配置火狐或谷歌瀏覽器及對應驅(qū)動?

9確保已經(jīng)正確配置好發(fā)送郵件的郵箱?

項目簡介

測試地址

https://mail.126.com

測試范圍

1.126電子郵箱登錄功能測試-驗證正確帳號密碼登錄成功-驗證錯誤用戶名密碼登錄失敶闻摇(有很多情況吓歇,用例里面做了充分的校驗)

2.126電子郵箱添加聯(lián)系人功能測試-驗證正確填寫必填項數(shù)據(jù)添加聯(lián)系人成功-驗證缺省必填項數(shù)據(jù)添加聯(lián)系人失敗-驗證必填項字段數(shù)據(jù)格式錯誤添加聯(lián)系人失敗

3.126電子郵箱發(fā)送郵件功能測試-驗證普通郵件發(fā)送成功-驗證帶附件郵件發(fā)送成功

項目設計

1.python編程語言設計測試腳本

2.webdriver驅(qū)動瀏覽器并操作頁面元素

3.二次封裝webdriver Api 操作方法

4.采用PageObject設計模式,設計測試業(yè)務流程

5.通過UI對象庫存儲頁面操作元素

6.通過數(shù)據(jù)文件存儲數(shù)據(jù)票腰,讀取數(shù)據(jù)城看,參數(shù)化測試用例并驅(qū)動測試執(zhí)行

7.通過第三方插件pytest-html生成測試報告

8.通過yagmail第三方庫,編寫發(fā)送報告接口杏慰,測試工作完成后自動發(fā)送測試報告

代碼分析

目錄結(jié)構(gòu)

?目錄結(jié)構(gòu)

代碼實現(xiàn)

通過126郵箱測試范圍分析测柠,我們需要通過設計剪切板,模擬鍵盤完成附件上傳操作缘滥,因此我們首先來編寫這兩個方法

?clipboard.py-操作剪切板

?keyboard.py-模擬鍵盤

通過測試項目設計轰胁,我們需要把測試數(shù)據(jù)存放在Excel文件中,把頁面操作元素存在UI對象庫中也就是一個配置文件朝扼,那么我們需要對Excel 和 ini文件解析赃阀,因此我們開始編寫這兩個方法,設計UI對象庫和測試數(shù)據(jù)文件

?parseExcelFile.py-解析Excel文件

?parseConFile.py-解析配置文件

?config.ini

新建excel文件擎颖,分3個sheet榛斯,分別為:login,contact搂捧,mail #每個sheet中數(shù)據(jù)可自行填寫驮俗,驅(qū)動測試用例執(zhí)行不同的數(shù)據(jù)進行測試

login

contact

mail

數(shù)據(jù),UI對象庫允跑,解析方法都已經(jīng)有了王凑,接下來通過PageObject模式設計編寫每個頁面的操作及封裝126郵箱的功能,以便后續(xù)設計用例調(diào)用

?BasePage.py-webdriver二次封裝

?HomePage.py-郵箱首頁選擇菜單

?LoginPage.py-封裝登錄功能

?ContactPage.py-封裝添加聯(lián)系人功能

?SendMailPage.py-封裝發(fā)送郵件功能

所有的準備工作都已經(jīng)做好了聋丝,還有一個問題荤崇,我們的添加聯(lián)系人和發(fā)送郵件應該是否應該在已經(jīng)登錄的前提下測試呢?答案是肯定的潮针。所以我們在用例同目錄下新建conftest.py文件并調(diào)用登錄功能(為什么這么做,不明白的小伙伴可以去看一下我之前的文章倚喂,關于conftest.py的原理)

?conftest.py-同用例目錄下每篷,調(diào)用登錄功能

ok瓣戚,開始編寫測試用例啦

?test_loginCase.py-登錄功能測試

?test_contactCase.py-添加聯(lián)系人功能測試

?test_sendMailCase.py-發(fā)送郵件功能測試

問題

用例已經(jīng)寫完了,有兩個問題

1.有沒有發(fā)現(xiàn)我們的報告怎么生成的焦读?也沒有失敗用例截圖子库?

2.我們貌似并沒有編寫驅(qū)動瀏覽器的代碼?

現(xiàn)在我們來解決這個兩個問題

根據(jù)pytest的conftest.py文件的原理矗晃,我們可以把驅(qū)動瀏覽器的代碼寫在一個全局的conftest.py文件里面仑嗅。報告生成其實是通過命令 pytest --html=‘report.html’?--self-contained-html生成的,但是這樣的報告對用例的描述不是很清晰张症,且沒有對失敗用例截圖仓技,也不方便我們分析項目的缺陷,我們也可以填寫代碼放到這個文件里面(關于報告修改的文章)

?conftest.py-全局conftest.py文件

最后呢俗他,為了減小項目維護成本脖捻,我們把一些全局的配置項,放到我們的功能配置文件中共全局使用兆衅,包括運行用例的一些命令字符串地沮,可以自行修改

?conf.py-全局配置文件

運行項目

通過命令運行

1.cmd切換到項目的根目錄,執(zhí)行pytest --html=‘report.html’?--self-contained-html命令(此運行方式羡亩,無法發(fā)送測試報告郵件)

這種方式感覺有點low摩疑,我們換另外一種方式,可以通過os模塊自動執(zhí)行相關命令畏铆,編寫運行用例代碼

?RunTestCase.py-執(zhí)行用例文件

我們可以直接執(zhí)行這個文件執(zhí)行所用的測試用例了雷袋!

其實我們運行用例往往不只是 使用pytest --html=‘report.html’?--self-contained-html?這樣一個簡單的命令運行,通常會添加很多的命令選項及志,比如-v,-q,-s等等片排,那么怎么辦呢?這時候就用到了pytest.ini配置文件了

只添加了幾個簡單的命令選項(pytest.ini具體使用及原理)

?pytest.ini-pytest配置文件

測試輸出

1.自動生成html格式報告速侈,其中報告里面附帶用例執(zhí)行日志明細率寡,及用例失敗自動截圖(部分報告展示)

2.自動發(fā)送測試郵件給指定用戶


傳送門:https://www.cnblogs.com/linuxchao/p/linuxchao-pytest-Actual.html


?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市倚搬,隨后出現(xiàn)的幾起案子冶共,更是在濱河造成了極大的恐慌,老刑警劉巖每界,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捅僵,死亡現(xiàn)場離奇詭異,居然都是意外死亡眨层,警方通過查閱死者的電腦和手機庙楚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趴樱,“玉大人馒闷,你說我怎么就攤上這事酪捡。” “怎么了纳账?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵逛薇,是天一觀的道長。 經(jīng)常有香客問我疏虫,道長永罚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任卧秘,我火速辦了婚禮呢袱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘斯议。我一直安慰自己产捞,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布哼御。 她就那樣靜靜地躺著坯临,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恋昼。 梳的紋絲不亂的頭發(fā)上看靠,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音液肌,去河邊找鬼挟炬。 笑死,一個胖子當著我的面吹牛嗦哆,可吹牛的內(nèi)容都是我干的谤祖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼老速,長吁一口氣:“原來是場噩夢啊……” “哼粥喜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起橘券,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤额湘,失蹤者是張志新(化名)和其女友劉穎旁舰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箭窜,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年磺樱,在試婚紗的時候發(fā)現(xiàn)自己被綠了纳猫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紧阔。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖续担,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情活孩,我是刑警寧澤物遇,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站憾儒,受9級特大地震影響询兴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜起趾,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一诗舰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧训裆,春花似錦眶根、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至变姨,卻和暖如春族扰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背定欧。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工渔呵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砍鸠。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓扩氢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親睦番。 傳聞我的和親對象是個殘疾皇子类茂,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容