本文介紹網站登陸功能,未使用ddt思想前每次登陸資料都重新寫一遍代碼,造成代碼冗余,與我們設計初衷相悖,
整篇文章從以下幾個方面介紹不同格式的資料怎樣利用ddt資料的思想實作登錄功能,
- 什么是DDT思想
- 登錄流程
- 未使用DDT實作登錄功能
- 資料腳本在代碼中實作DDT
- 資料腳本在CSV檔案中實作DDT
- 資料腳本在json檔案中實作DDT
- 資料腳本在excel檔案中實作DDT
- 資料腳本在ddt模塊中實作DDT
DDT思想
資料驅動測驗是指使用相同的測驗用例,但是每次都使用不同的測驗資料,進行的一種測驗,這些測驗資料,通常來自于外部,如.csv檔案,.xsl檔案,文本檔案,或者來自資料庫,資料驅動測驗是一種最常見的自動化測驗技術,用于在許多不同的輸入中驗證應用程式,
舉個例子:
比如去超時買東西結賬的流程,只是買的東西不同,從選購到結算整個流程都是相同的,通過DDT思想可以把買的商品都統一放到一個檔案中,統一進行結賬操作,
登錄流程
1.本機訪問地址http://localhost:8888/jpress/user/login
2.輸入用戶名和密碼(錯誤、正確)
3.點擊登錄按鈕
4.判斷是否登錄成功
未使用DDT實作登錄功能
分別定義兩個函式實作登錄流程,登錄成功和登錄失敗,測驗資料放在函式內部,
如下面代碼所示:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
from selenium import webdriver
import pytest
class TestUserLogin(object):
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.get('http://localhost:8888/jpress/user/login')
self.driver.maximize_window()
#用戶名、密碼錯誤
def test_user_logon_username_error(self):
#測驗資料
username=''
pwd='123456'
expected='賬號不能為空'
self.driver.find_element_by_name('user').send_keys(username)
self.driver.find_element_by_name('pwd').send_keys(pwd)
self.driver.find_element_by_class_name('btn').click()
WebDriverWait(self.driver,5).until(EC.alert_is_present())
alert=self.driver.switch_to.alert
sleep(3)
assert alert.text==expected
alert.accept()
def test_user_logon_username_pass(self):
#測驗資料
username='wx1'
pwd='123456'
expected='用戶中心'
self.driver.find_element_by_name('user').send_keys(username)
self.driver.find_element_by_name('pwd').clear()
self.driver.find_element_by_name('pwd').send_keys(pwd)
self.driver.find_element_by_class_name('btn').click()
WebDriverWait(self.driver,5).until(EC.title_is(expected))
sleep(3)
assert self.driver.title==expected
self.driver.quit()
if __name__ == '__main__':
pytest.main()
資料腳本在代碼中
增加如下代碼
login_data=[
('','123456','賬號不能為空') ,
('wx1','123456','用戶中心')
]
@pytest.mark.parametrize('username,pwd,expected',login_data)
1.之前是2個登錄用例改寫為一個
2.斷言通過用戶名進行判斷
重構完成后代碼
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
from selenium import webdriver
import pytest
class TestUserLogin(object):
#測驗資料
login_data=[
('','123456','賬號不能為空') ,
('wx1','123456','用戶中心')
]
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.get('http://localhost:8888/jpress/user/login')
self.driver.maximize_window()
#測驗用戶登錄
@pytest.mark.parametrize('username,pwd,expected',login_data)
#實作登錄
def test_user_logon_username_pass(self,username,pwd,expected):
self.driver.find_element_by_name('user').clear()
self.driver.find_element_by_name('user').send_keys(username)
self.driver.find_element_by_name('pwd').clear()
self.driver.find_element_by_name('pwd').send_keys(pwd)
self.driver.find_element_by_class_name('btn').click()
#斷言判斷
if username=='':
WebDriverWait(self.driver, 5).until(EC.alert_is_present())
alert = self.driver.switch_to.alert
sleep(3)
assert alert.text == expected
alert.accept()
else:
WebDriverWait(self.driver,5).until(EC.title_is(expected))
sleep(3)
assert self.driver.title==expected
self.driver.quit()
if __name__ == '__main__':
pytest.main()
后面的內容更精彩!
最后: 給大家推薦一個 q 群:902061117 里面有許多資料共享!資料都是面試時面試官必問的知識點,也包括了很多測驗行業常見知識,其中包括了有基礎知識、Linux必備、Shell、互聯網程式原理、Mysql資料庫、抓包工具專題、介面測
試工具、測驗進階-Python編程、Web自動化測驗、APP自動化測驗、介面自動化測驗、測驗高級持續集成、測驗架構開發測驗框架、性能測驗、安全測驗等,
如果對你有一點點幫助,各位的「點贊」就是小編創作的最大動力,我們下篇文章見!
好文推薦
2021軟體測驗工程師面試題匯總(內含答案)-看完BATJ面試官對你豎起大拇指!
什么樣的人適合從事軟體測驗作業?
軟體測驗和軟體開發哪個發展更好
那個準點下班的人,比我先升職了…

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291797.html
標籤:其他
