-
目的
相同的測試腳本使用不同的測試數據來執行,實現測試數據(數據和操作關鍵詞分離)和測試腳本分離。 -
步驟
(1)編寫測試腳本,腳本需要指出從程序對象、文件或數據庫讀入測試數據;
(2)將測試腳本使用的測試數據存入程序對象、文件或數據庫等外部介質中;
(3)運行腳本過程中,循環調用存儲在外部介質中的測試數據;
(4)驗證所有的測試結果是否符合預期結果。 -
測試邏輯:
(1)打開百度首頁
(2)在搜索框輸入一個搜索關鍵詞
(3)點擊搜索按鈕
(4)驗證搜索結果頁面是否包含預期關鍵字,包含則認爲測試執行通過,否則認爲測試執行失敗。 -
百度搜索代碼:
4.1. 程序文件結構
HybridDrivenProject |---------------python工程
testdata.txt |---------------數據文件,存儲測試數據
teststep.txt |---------------數據文件,存儲關鍵字步驟
DataDrivenTest.py |---------------測試程序文件
4.2. testdata.txt
http://www.126.com
http://www.sohu.com
4.3. teststep.txt
open_browes||firfox
visit||${url}
sleep||3
quit||None
4.4. HybridDrivenTest.py
import time
import re
from selenium import webdriver
# 全局變量
driver = None
# 選擇要打開瀏覽器的瀏覽器並打開
def open_browes(brows='firefox'):
global driver
if 'ie' in brows:
driver = webdriver.Ie(executable_path='')
elif 'chrome' in brows:
driver = webdriver.Chrome(executable_path='')
else:
driver = webdriver.Firefox()
# 打開網址
def visit(url=None):
global driver
if url is None:
raise
driver.get(url)
# 暫停3秒
def sleep(t):
time.sleep(int(t))
# 退出瀏覽器
def quit(x):
global driver
driver.quit()
if __name__ == '__main__':
# 讀取訪問網址的數據文件
with open('./testdata.txt', 'r') as fp:
testdata = fp.readlines()
# 讀取操作數據文件
with open('./teststep.txt', 'r') as fp:
teststep = fp.readlines()
# 循環遍歷網址、操作步驟
for url_info in testdata:
for data in teststep:
action, value = data.split('||')
# 判斷操作是否還有其他參數
if re.search(r'\$\{\w+\}',value):
value = url_info
command = '%s("%s")' % (action.strip(), value.strip())
exec(command)