移動自動化 八 資料驅動

2022-08-14 06:36:16 字數 1954 閱讀 9183

基於資料流完成流程排程,資料**於外部,可以從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...