import unittest
from openpyxl import load_workbook
class MyTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
# 创建一个浏览器 driver 实例
cls.driver = webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.implicitly_wait(10)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_excel_data(self):
"""从Excel文件中读取测试数据"""
# 加载 Excel 文件
wb = load_workbook(filename='web_autotest.xlsx')
# 遍历所有 Sheet
# 每个 Sheet 单独执行一次自动化测试
for sheetname in wb.sheetnames:
ws = wb[sheetname]
# 遍历所有行
for row in ws.iter_rows(min_row=2):
# 读取测试数据
data = {}
data['step'] = row[0].value
data['locator'] = row[1].value
data['value'] = row[2].value
data['expect'] = row[3].value
# 执行测试步骤
self._test_step(data)
def _test_step(self, data):
"""执行测试步骤"""
step, locator, value, expect = data.values()
# 确定定位方式
if ':' in locator:
by = locator.split(':')[0]
value = locator.split(':')[1]
else:
by = 'xpath'
# 执行测试步骤
if step == 'open':
self.driver.get(value)
elif step == 'input':
self.driver.find_element(by=by, value=value).send_keys(value)
elif step == 'click':
self.driver.find_element(by=by, value=value).click()
elif step == 'assert':
self.assertEqual(expect, self.driver.find_element(by=by, value=value).text)