自动化测试-16.selenium数据的分离之Excel的使用
前言
在自动化测试中,单纯写得测试脚本,数据往往是写死的,这样会给程序的可扩展性降低,以及成本的增加,将程序和数据进行剥离有利于提高代码的执行效率,提升工作量,因此将数据写入到Excel文件中,前置条件已在本地搭建BugFree,若没有搭建可参考BugFree本地搭建。
下列代码实现创建Excel文件的数据,和从Excel中读取数据,并将数据传值给脚本:
1 #encoding=utf-8 2 3 from selenium import webdriver 4 5 import xlsxwriter #往Excel表格写数据 安装cmd输入: pip install XlsxWriter,前置条件已安装pip 6 7 import xlrd,os # xlrd模块用于读EXCEL文档数据,安装xlrd在cmd中输入pip install xlrd,前置条件已安装pip 8 9 # 新建Excel表格 10 def write_content(): 11 # 新建Excel表格 12 xl = xlsxwriter.Workbook(os.getcwd()+'\\testData\\testResult.xlsx') # 新建Excel表格,注意需要在当前目录下新建testData文件夹 13 table = xl.add_worksheet('result') # 新建一个名为result的页签 14 # 设置格式:行高、列宽、底色、字号等格式 15 blue = xl.add_format({'font_name': 'Arial', 'font_size': 10,'color': 'blue'}) 16 red = xl.add_format({'font_name': 'Arial', 'font_size': 10,'color': 'red'}) 17 # 设置第一行的行高为30 18 table.set_row(0,15) 19 # 设置第1列到第3列的列宽为50 20 table.set_column(0,2,50) 21 # 写数据 22 table.write_string(0,0,'url',blue) 23 table.write_string(0,1,u'用户名',blue) # 往第一行第一列写入字符串数据 24 table.write_string(0,2,u'密码',red) 25 table.write_string(1,0,u'http://localhost/index.php/site/login',blue) # 往第二行第一列写入数字,本地搭建的bugfree地址 26 table.write_string(1,1,'admin',blue) 27 table.write_string(1,2,'123456',red) 28 # 关闭Excel表格 29 xl.close() 30 31 # 读取数据 32 def read_content(): 33 # 一下脚本实现bugfree登录,测试数据从Excel读取 34 data = xlrd.open_workbook(os.getcwd()+'\\testData\\testResult.xlsx') 35 tableGet = data.sheet_by_name('result') 36 testData = tableGet.row_values(1) #读取第二行数据 37 url,username,password = testData[0],testData[1],testData[2] 38 print url,username,password 39 return url,username,password 40 41 # 定义测试脚本 42 def bugFreeLogin(driver,url,username,password): 43 driver.get(url) 44 driver.find_element_by_id('LoginForm_username').send_keys(username) 45 driver.find_element_by_id('LoginForm_password').send_keys(password) 46 driver.find_element_by_id('SubmitLoginBTN').click() 47 48 # 启动脚本 49 if __name__ == '__main__': 50 # 数据的写入 51 write_content() 52 # 数据的读取 53 tup_result = read_content() 54 # 启动脚本去执行 55 driver = webdriver.Firefox() 56 bugFreeLogin(driver,tup_result[0],tup_result[1],tup_result[2])