def rowToList(row):
“”"
将excel表的行数据,转换成字符串列表
:param row:excel表的行
:return:字符串列表
“”"
case = []
for r in row:
if r.value == None: # 如果单元格为空
case.append(’’)
else:
case.append(str(r.value))
return case
import os
from autoRanzhi.page.login import Login
import unittest
from openpyxl import load_workbook
class Test_login(unittest.TestCase):
“”"
测试登陆功能
“”"
def setUp(self) -> None:
self.lg = Login(‘http://localhost:8000/ranzhi/www’)
print(’--------用例准备就绪-----------’)
def tearDown(self) -> None:
print('----------该用例执行完毕----------')
def test_login_batch(self):
fn = '..\\case\\case1.xlsx'
if os.path.exists(fn) == False:
fn = 'case\\case1.xlsx' # 如果用外面的testRunner运行,这样找文件
# 打开Excel文件
ws = load_workbook(fn) # 打开文件薄赋值为ws
st = ws['login'] #打开表login
nRow = 0 #当前行号计数器
nCount = 0 #用例总数计数器
nFail = 0 #失败用例计数器
for row in st.iter_rows(): #st.iter_rows()获取工作表中的所有数据
nRow += 1
if nRow == 1: # 跳过第一行标题行
continue
if row[0].value == '%END%': # 当某行第一个值为%END%时,退出
break
# 将当前行数据转换成字符列表
case = rowToList(row)
# 调用登陆页面login的方法执行用例
print('用例:%s'%case[0])
self.lg.open_page()
self.lg.login(case[1],case[2])
# 验证登陆,并得到返回结果
re = self.lg.login_v(case[3],case[4])
self.lg.close_page()
print('\t'+ re)
# 执行用例数加一
nCount += 1
# 将执行结果回填到Excel表中
if 'PASS' in re:
st['F%d'%nCount] = 'PASS'
st['G%d'%nCount] = ''
else:
st['F%d' % nCount] = 'FAIL'
st['G%d' % nCount] = re
nFail += 1
# 每执行一个用例就保存文件,注意这里需要关闭手工打开的cases.xlsx,
# 否则斜入式会报权限拒绝
ws.save(fn)
ws.close() # 关闭cases.xlsx
print('本次共执行用例%s条;失败用例%s条'%(nCount,nFail))
# 断言有没有失败用例,如果有则整体失败
self.assertEqual(nFail,0,'本次执行中有失败用例')