一、编写测试用例
----按此模板,进行编写
二、配置文件
1、新建一个.ini文件
[localhost]
host = 0.0.0.0
port = 5555
[path]
upload_export_path = D:\\python\\bushu1\\jiekou\\file\\
moban_path = D:\\python\\bushu1\\jiekou\\moban\\
result_path = D:\\python\\bushu1\\jiekou\\core\\result.py
2、新建一个conf.py文件,读取配置文件
from configparser import ConfigParser
def conf():
cfg = ConfigParser()
cfg.read('D:\\python\\bushu1\\jiekou\\config\\conf.ini')
cfg1 = dict(cfg.items('localhost'))
return cfg1
def conf1():
cfg = ConfigParser()
cfg.read('D:\\python\\bushu1\\jiekou\\config\\conf.ini')
cfg2 = dict(cfg.items('path'))
return cfg2
三、读取测试用例excel
import openpyxl
def read_data(filename, sheetname):
"""
:param filename: # 表明
:param sheetname: # sheet名
:return:
"""
list1 = []
file = openpyxl.load_workbook(filename)
sheet = file[sheetname]
max_now = sheet.max_row
for i in range(2, max_now + 1):
dict1 = dict(
case_id=sheet.cell(row=i, column=1).value,
headers=sheet.cell(row=i, column=5).value,
cookies=sheet.cell(row=i, column=6).value,
url=sheet.cell(row=i, column=7).value,
data=sheet.cell(row=i, column=8).value,
expect=sheet.cell(row=i, column=9).value
)
list1.append(dict1)
return list1
四、请求接口
import requests
def register(url, data, headers, cookies):
"""
:param cookies:
:param headers:
:param url:
:param data:
:return:
"""
re = requests.post(url=url, json=data, headers=headers, cookies=cookies)
response = re.json()
return response
五、运行结果写入excel
import time
import openpyxl
from openpyxl.styles import Alignment
from openpyxl.styles import PatternFill
def write_actual_result(filename, sheetname, row, column, final_result):
"""
:param filename:
:param sheetname:
:param row:
:param column:
:param final_result:
"""
wb = openpyxl.load_workbook(filename)
sheet = wb[sheetname]
sheet.cell(row=row, column=column).value = final_result
sheet.cell(row=row, column=column).alignment = Alignment(vertical='center')
wb.save(filename)
def write_result(filename, sheetname, row, column, final_result):
"""
:param filename:
:param sheetname:
:param row:
:param column:
:param final_result:
"""
wb = openpyxl.load_workbook(filename)
sheet = wb[sheetname]
sheet.cell(row=row, column=column).value = final_result
sheet.cell(row=row, column=column).alignment = Alignment(horizontal='center', vertical='center')
if final_result == 'pass':
sheet.cell(row=row, column=column).fill = PatternFill('solid', fgColor="00FF00")
elif final_result == 'failed':
sheet.cell(row=row, column=column).fill = PatternFill('solid', fgColor='FF0000')
wb.save(filename)
def write_time(filename, sheetname, row, column):
"""
:param filename:
:param sheetname:
:param row:
:param column:
"""
wb = openpyxl.load_workbook(filename)
sheet = wb[sheetname]
sheet.cell(row=row, column=column).value = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
sheet.cell(row=row, column=column).alignment = Alignment(horizontal='center', vertical='center')
wb.save(filename)
六、主文件----执行测试用(运行此文件即可)
from pathlib import Path
from jiekou.core.read_excel import *
from jiekou.core.register import *
from jiekou.core.write_result import *
from jiekou.config.conf import *
def test_excel(filename, sheetname):
for case in cases:
case_id = case.get('case_id')
url = case.get('url')
headers = eval(case.get('headers'))
cookies = eval(case.get('cookies'))
data = case.get('data')
data = eval(data.replace("null", "None"))
expect = eval(case.get('expect'))
expect_msg = expect.get('message')
expect_code = expect.get('code')
real_result = register(url=url, data=data, headers=headers, cookies=cookies)
real_msg = real_result.get('message')
real_code = real_result.get('code')
print('预期结果的message:{}'.format(expect_msg), '预期结果的code:{}'.format(expect_code))
print('实际结果的message:{}'.format(real_msg), '实际结果的code:{}'.format(real_code))
if real_msg == expect_msg and real_code == expect_code:
print('第{}条测试用例通过'.format(case_id))
final_re = 'pass'
else:
print('第{}条测试用例不通过'.format(case_id))
final_re = 'failed'
write_actual_result(filename, sheetname, case_id + 1, 10, str(real_result))
write_result(filename, sheetname, case_id + 1, 11, final_re)
write_time(filename, sheetname, case_id + 1, 12)
if __name__ == "__main__":
folder_path = Path(conf1().get('upload_export_path'))
file_list = folder_path.glob('*.xls*')
for i in file_list:
file_name = i.name
excel_total = openpyxl.load_workbook(str(folder_path) + '\\' + file_name)
for sheet_name in excel_total.sheetnames:
sheet_names = sheet_name
cases = read_data(str(folder_path) + '\\' + file_name, sheet_names)
test_excel(str(folder_path) + '\\' + file_name, sheet_names)