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

前言

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

環(huán)境準(zhǔ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確保已配置火狐或谷歌瀏覽器及對應(yīng)驅(qū)動?

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

項目簡介

測試地址

https://mail.126.com

測試范圍

1.126電子郵箱登錄功能測試-驗證正確帳號密碼登錄成功-驗證錯誤用戶名密碼登錄失?。ㄓ泻芏嗲闆r,用例里面做了充分的校驗)

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

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

項目設(shè)計

1.python編程語言設(shè)計測試腳本

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

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

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

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郵箱測試范圍分析,我們需要通過設(shè)計剪切板,模擬鍵盤完成附件上傳操作,因此我們首先來編寫這兩個方法

?clipboard.py-操作剪切板

?keyboard.py-模擬鍵盤

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

?parseExcelFile.py-解析Excel文件

?parseConFile.py-解析配置文件

?config.ini

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

login

contact

mail

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

?BasePage.py-webdriver二次封裝

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

?LoginPage.py-封裝登錄功能

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

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

所有的準(zhǔn)備工作都已經(jīng)做好了,還有一個問題,我們的添加聯(lián)系人和發(fā)送郵件應(yīng)該是否應(yīng)該在已經(jīng)登錄的前提下測試呢?答案是肯定的。所以我們在用例同目錄下新建conftest.py文件并調(diào)用登錄功能(為什么這么做,不明白的小伙伴可以去看一下我之前的文章,關(guān)于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生成的,但是這樣的報告對用例的描述不是很清晰,且沒有對失敗用例截圖,也不方便我們分析項目的缺陷,我們也可以填寫代碼放到這個文件里面(關(guān)于報告修改的文章)

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

最后呢,為了減小項目維護(hù)成本,我們把一些全局的配置項,放到我們的功能配置文件中共全局使用,包括運(yùn)行用例的一些命令字符串,可以自行修改

?conf.py-全局配置文件

運(yùn)行項目

通過命令運(yùn)行

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

這種方式感覺有點(diǎn)low,我們換另外一種方式,可以通過os模塊自動執(zhí)行相關(guān)命令,編寫運(yùn)行用例代碼

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

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

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

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

?pytest.ini-pytest配置文件

測試輸出

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

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


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


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容