python读取Excel实现接⼝⾃动化并⽣成测试报告http_request2.py⽤于发起http请求
#读取多条测试⽤例
#1、导⼊requests模块
importrequests
#从 class_12_19.do_excel1导⼊read_data函数
fromdo_excel2 importread_data
fromdo_excel2 importwrite_data
fromdo_excel2 importcount_case
#定义http请求函数
COOKIE=None
defhttp_request2(method,url,data):
ifmethod=='get':
print('发起⼀个get请求')
(url,data,cookies=COOKIE)
else:
print('发起⼀个post请求')
result=requests.post(url,data,cookies=COOKIE)
returnresult #返回响应体
# return result.json() #返回响应结果:结果是字典类型:{'status': 1, 'code': '10001', 'data': None, 'msg': '登录成功'}
#从Excel读取到多条测试数据
sheets=['login','recharge','withdraw']
forsheet1 insheets:
max_row=count_case(sheet1)
print(max_row)
forcase_id inrange(1,max_row):
data=read_data(sheet1,case_id)
print('读取到第{}条测试⽤例:'.format(data[0]))
print('测试数据 ',data)
python怎么读取py文件
#print(type(data[2]))
#调⽤函数发起http请求
result=http_request2(data[4],data[2],eval(data[3]))
print('响应结果为 ',result.json())
kies
#将测试实际结果写⼊excel
#write_data(case_id+1,6,result['code'])
write_data(sheet1,case_id+1,7,str(result.json()))
#对⽐测试结果和期望结果
ifresult.json()['code']==str(data[5]):
print('测试通过')
#将⽤例执⾏结果写⼊Excel
write_data(sheet1,case_id+1,8,'Pass')
else:
write_data(sheet1,case_id+1,8,'Fail')
print('测试失败')
do_excel2.py完成对excel中⽤例的读、写、统计# 导⼊load_workbook
fromopenpyxl importload_workbook
#读取测试数据
#将excel中每⼀条测试⽤例读取到⼀个列表中
#读取⼀条测试⽤例——写到⼀个函数中
defread_data(sheet_name,case_id):
# 打开excel
workbook1=load_workbook('test_case2.xlsx')
# 定位表单(test_data)
sheet1=workbook1[sheet_name]
print(sheet1)
test_case=[] #⽤来存储每⼀⾏数据,也就是⼀条测试⽤例 test_case.ll(case_id+1,1).value)
test_case.ll(case_id+1,2).value)
test_case.ll(case_id+1,3).value)
test_case.ll(case_id+1,4).value)
test_case.ll(case_id+1,5).value)
test_case.ll(case_id+1,6).value)
returntest_case #将读取到的⽤例返回
#调⽤函数读取第1条测试⽤例,并将返回结果保存在data中# data=read_data(1)
# print(data)
#将测试结果写会excel
defwrite_data(sheet_name,row,col,value):
workbook1=load_workbook('test_case2.xlsx')
sheet=workbook1[sheet_name]
workbook1.save('test_case2.xlsx')
#统计测试⽤例的⾏数
defcount_case(sheet_name):
workbook1=load_workbook('test_case2.xlsx')
sheet=workbook1[sheet_name]
max_row=sheet.max_row #统计测试⽤例的⾏数
returnmax_row
test_case2.xlsx存储测试⽤例
python⽤unittest+HTMLTestRunner+csv的框架测试并⽣成测试补充知识:
补充知识:python⽤unittest+HTMLTestRunner+csv的框架测试并⽣成测试报告
importcsv # 导⼊scv库,可以读取csv⽂件
fromselenium importwebdriver
importunittest
fromtime importsleep
importtime
importos
importHTMLTestRunner
importcodecs
importsys
dr =webdriver.Chrome()
classtestLo(unittest.TestCase):
defsetUp(self):
pass
deftest_login(self):
'''登陆测试'''
path ='F:\\Python_test\\'
# 要读取的scv⽂件路径
my_file ='F:\\pythonproject\\interfaceTest\\testFile\\ss.csv'
# ader()读取csv⽂件,
# Python3.X⽤open,Python2.X⽤file,'r'为读取
# open(file,'r')中'r'为读取权限,w为写⼊,还有rb,wd等涉及到编码的读写属性
#data = ader(codecs.open(my_file, 'r', encoding='UTF-8',errors= 'ignore'))
with codecs.open(my_file, 'r', encoding='UTF-8',errors='ignore') as f:
ader((place(' 00','') forline inf))
# for循环将读取到的csv⽂件的内容⼀⾏⾏循环,这⾥定义了user变量(可⾃定义)
# user[0]表⽰csv⽂件的第⼀列,user[1]表⽰第⼆列,user[N]表⽰第N列
# for循环有个缺点,就是⼀旦遇到错误,循环就停⽌,所以⽤try,except保证循环执⾏完  print(my_file)
foruser indata:
print(user)
# dr.find_element_by_id('input1').clear()
dr.find_element_by_id('input1').send_keys(user[0])
# dr.find_element_by_id('input2').clear()
dr.find_element_by_id('input2').send_keys(user[1])
dr.find_element_by_id('signin').click()
sleep(1)
print('\n'+'测试项:'+user[2])
<_screenshot_as_file(path +user[3] +".jpg")