起源
這是一場(chǎng)意外
話(huà)說(shuō)筆者某天閑著沒(méi)事具练,也正巧剛啃完 Python & Selenium 漏策,于是漫無(wú)目的地在網(wǎng)上搜索著技術(shù)相關(guān)文章由蘑。搜著搜著搜到了一個(gè)開(kāi)源的報(bào)告生成庫(kù),這時(shí)吠冤,一幅精美的報(bào)告映入了我的眼簾...
初識(shí) ptest
精美報(bào)告在此:
當(dāng)我看到這個(gè)報(bào)告的一瞬間,心中小鹿亂撞恭理,沒(méi)想到從沒(méi)經(jīng)歷過(guò)的一見(jiàn)鐘情 ( 臉 ) 竟會(huì)發(fā)生在我身上拯辙。
零距離接觸
于是乎內(nèi)心火熱的我找到了此項(xiàng)目的開(kāi)源地址,進(jìn)行了一次零距離的接觸......
安裝
依然是萬(wàn)年不變的 pip install 大法:
pip install ptest==1.9.5
最佳實(shí)踐
這里我使用了自己開(kāi)發(fā)的 violent-webdriver 庫(kù)進(jìn)行 selenium 二次封裝颜价,所以需要再來(lái)一次 pip install 大法:
pip install violent-webdriver==1.0.27
然后我們可以開(kāi)始擼代碼拉~
首先我們新建一個(gè) Python 文件涯保,名為 uitest.py诉濒,并寫(xiě)入下列 核心代碼~
核心代碼
from ptest.decorator import TestClass, Test, BeforeClass, AfterClass
from ptest.assertion import assert_true
from ptest.plogger import preporter
# from selenium.webdriver.chrome.options import Options
from violent_webdriver import Chrome
# chrome驅(qū)動(dòng)地址,請(qǐng)自行修改
CHROMEDRIVER_PATH = 'C://MyDownloads/Download/chrome-win32/chromedriver.exe'
# 還是按照慣例拿百度開(kāi)測(cè)
TEST_URL = 'https://www.baidu.com'
@TestClass(run_mode="singleline")
class BaiduTest:
# 初始化Chrome
@BeforeClass(description='啟動(dòng)瀏覽器')
def before(self):
self.driver = Chrome.violent_chromedriver(CHROMEDRIVER_PATH)
self.driver.set_window_size(1920, 1080)
self.driver.implicitly_wait(10)
# 測(cè)試執(zhí)行
@Test(tags=["regression", "smoke"], timeout=60, description="驗(yàn)證百度首頁(yè)的title中是否包含「百度一下」字符串")
def BaiduTest_001(self):
self.driver.get(TEST_URL)
title_text = self.driver.title
preporter.info('已進(jìn)入百度首頁(yè)并獲取頁(yè)面title遭赂,title值為: 「%s」' % title_text, screenshot=True)
assert_true('百度一下' in title_text)
# 關(guān)閉資源
@AfterClass(timeout=10, description='關(guān)閉瀏覽器')
def after(self):
self.driver.quit()
代碼講解
沒(méi)錯(cuò)循诉,我們還是拿百度做實(shí)驗(yàn) :) , 代碼執(zhí)行過(guò)程非常簡(jiǎn)單:
- 初始化瀏覽器
- 登錄百度首頁(yè)
- 獲取百度首頁(yè)標(biāo)題
- 校驗(yàn)百度首頁(yè)標(biāo)題是否為 百度一下
- 關(guān)閉瀏覽器
再介紹一下 ptest 框架中獨(dú)有的裝飾器~
- @TestClass 代表測(cè)試類(lèi)
- @BeforeClass 代表在執(zhí)行測(cè)試類(lèi)中用例的前置步驟 ( 如:初始化瀏覽器等...... )
- @Test 代表一個(gè)測(cè)試用例的具體執(zhí)行過(guò)程 ( 如:訪(fǎng)問(wèn)測(cè)試地址、獲取頁(yè)面標(biāo)題撇他、斷言等......)
- @AfterClass 則常用于測(cè)試類(lèi)運(yùn)行完畢后的清理工作 ( 如:關(guān)閉瀏覽器等...... )
運(yùn)行效果
代碼擼完后在當(dāng)前目錄下直接運(yùn)行:
ptest3 -t uitest
代碼運(yùn)行完畢后將在當(dāng)前目錄下生成測(cè)試報(bào)告茄猫,打開(kāi)后如下所示:
嗯,沒(méi)錯(cuò)困肩,是我喜歡的模樣划纽。
總結(jié)
一個(gè)好看的報(bào)告將會(huì)帶來(lái)一天的好心情~
希望大家能從本篇文章有所收獲~
最后給大家推薦一下我的公眾號(hào) 「智能測(cè)試開(kāi)發(fā)」,歡迎大家掃描下方海報(bào)二維碼領(lǐng)取 進(jìn)階教程~