基於資料流完成流程排程,資料**於外部,可以從execl,yaml,資料庫中獲取
使用yaml, json等讀取資料
流程: 讀取外部檔案 -> 動態建立測試用例
pip install pyyaml
yaml檔案操作
簡單的步驟驅動例子
yaml檔案: ch2/case.yaml
# 簡單的case_yaml模板
- descripton: 進入搜尋頁面
methods: id
value: ivsearch
action: click
- descripton: 搜尋測試資料
methods: id
value: etsearch
action: send_keys
data: 測試
- descripton: 獲取搜尋值
methods: id
value: tvsearchresult
action: text
測試步驟驅動 ch2/test_yaml.py
讀取yaml檔案並且以dict格式輸出
定義drver: webdriver (等同於把之前的self.driver傳給資料驅動方法)
迴圈每個字典,執行不同的測試步驟
method函式: 定位有不同方式,這邊單獨封裝,主要涉及的有id,xpath,accessibility_id
測試驅動,直接呼叫self.method函式
class testcasetemplate:
def __init__(self, path):
with open(path, 'r', encoding="utf-8") as file:
self.steps = yaml.safe_load(file)
def method(self, driver: webdriver, method, value):
ele = none
if method == 'id':
ele = driver.find_element_by_id(value)
elif method =='xpath':
ele = driver.find_element_by_xpath(value)
elif method == 'accessibility':
ele = driver.find_element_by_accessibility_id(value)
else:
return 'no element'
return ele
def run(self, driver: webdriver):
for step in self.steps:
elemet = none
if isinstance(step, dict):
if 'methods' in step.keys() and 'value' in step.keys():
elemet = self.method(driver, step['methods'], step['value'])
else:
print(step.keys())
if 'action' in step.keys():
if 'click' in step['action']:
elemet.click()
elif 'send_keys' in step['action']:
if 'data' in step.keys():
elemet.send_keys(step['data'])
else:
print('沒有輸入的測試資料')
elif 'text' in step['action']:
data = elemet.text
print(data)
資料驅動自動化測試
傳統測試認為功能測試 黑盒測試 就是資料驅動測試,而在自動化測試體系中,資料驅動測試則有了新的詮釋。以乙個基礎的自動化框架為例,它可以分為三層設計,資料層 邏輯層 業務層,假設資料層的設計足夠抽象,即可實現多套測試資料執行同樣的測試 邏輯 另一方面從功能測試的角度理解,這種設計同樣可以完成多角度測試...
selenium自動化 資料驅動2
1 coding utf 8 2import xlrd34 class excelutil 56 初始化 7def init self,excelpath,sheetname 8 先初始化開啟資料檔案 9 self.data xlrd.open workbook excelpath 10 再通過sh...
移動自動化 七 引數化
背景 有時候一條case重複測試會相當不方便,所以引入了引數化,這邊測試框架使用了pytest,pytest引數化不知道的,可以往前翻,使用裝飾器 pytest.mark.parametrize ch2 test param.py pytest.mark.parametrize key,res 23...