参数化脚本
什么是参数化
- 参数化就是用包含多组数据的参数列表,使之替换脚本中的响应常量值,这样,在脚本运行的时候,就会使用参数表中的数据来代替脚本中的常量值
- 由于参数表中包含了多组数据,所以执行用例时,会多次自动运行脚本,每次使用不同组的数据来代替脚本,这个运行次数就是参数表中的记录数,每执行一次测试,称为一个反复
三种参数化的方法
- 使用列表进行参数化
- 读取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()