參數化腳本
什么是參數化
- 參數化就是用包含多組數據的參數列表,使之替換腳本中的響應常量值,這樣,在腳本運行的時候,就會使用參數表中的數據來代替腳本中的常量值
- 由於參數表中包含了多組數據,所以執行用例時,會多次自動運行腳本,每次使用不同組的數據來代替腳本,這個運行次數就是參數表中的記錄數,每執行一次測試,稱為一個反復
三種參數化的方法
- 使用列表進行參數化
- 讀取TXT文件中的數據,讀取文本有三種方式
- read():讀取整個文件
- readline():讀取一行數據
- readlines():讀取所有行的數據
-
user_file=open('test_data.txt','r')#以只讀的方式打開test_data.txt文件,可標注文件路徑或當文件和運行腳本在同一文件下時標注文件名稱 lines=user_file.readlines()#讀取文件中的所有行,以數組的形式進行保存 user_file.close()#關閉文件 #遍歷在文件中取出的數組 for line in lines: username=line.split(',')[0]#以逗號作為分隔符,取出數組中的第一個元素 password=line.split(','[1])#以逗號作為分隔符,取出同一數組中的第二個元素 print(username.password)
- 獲取CSV文件中的數據
-
import csv#引入CSV包 data=csv.reader(open('D:\\test\\login.csv','r'))#讀取CSV文件並以只讀的方式打開CSV文件 for line in data: print(line[0], line[1])#line[0]即讀取line中的第一列元素
例子:使用參數化的方式實現在百度頁面中搜索不同的關鍵字
from selenium import webdriver import time keys=['selenium','自動化測試','性能測試','接口測試'] driver=webdriver.Firefox() driver.get('https://www.baidu.com') for text in keys: driver.find_element_by_xpath('//input[@id="kw"]').clear() driver.find_element_by_xpath('//input[@id="kw"]').send_keys(text) driver.find_element_by_id('su').click() print(driver.title) time.sleep(2) driver.quit()
例子:以百度登錄功能為例,使用讀取txt文本的方式進行參數化
from selenium import webdriver import time file_txt=open('D:\\test\\login.txt','r') lines=file_txt.readlines() file_txt.close() for line in lines: username=line.split(',')[0] password=line.split(',')[1] print(username,password) driver=webdriver.Firefox() driver.get('http://www.baidu.com') driver.find_element_by_link_text('登錄').click() time.sleep(2) driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click() driver.find_element_by_name('userName').send_keys(username) driver.find_element_by_name('password').send_keys(password) driver.find_element_by_id('TANGRAM__PSP_10__memberPass').click() driver.find_element_by_id('TANGRAM__PSP_10__submit').click() time.sleep(2) driver.quit()
例子:以百度登錄功能為例,使用讀取CSV文件的方式進行參數化
from selenium import webdriver import time import csv#引入CSV包 data=csv.reader(open('D:\\test\\login.csv','r'))#讀取CSV文件並以只讀的方式打開CSV文件 for line in data: print(line[0], line[1])#line[0]即讀取line中的第一列元素 driver=webdriver.Firefox() driver.get('http://www.baidu.com') driver.find_element_by_link_text('登錄').click() time.sleep(2) driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click() driver.find_element_by_name('userName').send_keys(line[0])#引用CSV文件中第一列元素 driver.find_element_by_name('password').send_keys(line[1])#引用CSV文件中第一列元素 driver.find_element_by_id('TANGRAM__PSP_10__memberPass').click() driver.find_element_by_id('TANGRAM__PSP_10__submit').click() time.sleep(2) driver.quit()