20201105_用python操作excel

参考资料

安装

pip install openpyxl

在pycharm中直接安装

课堂代码

# -*- coding: utf-8 -*-
# @Time    : 2020-11-05 15:13
# @Author  : feier
# @File    : excel_demo.py

from openpyxl import Workbook
from openpyxl.utils import get_column_letter

# 实例化一个工作簿的对象
wb = Workbook()

# 定义excel文件名
dest_filename = 'empty_book.xlsx'

# 选择要操作的sheet
ws1 = wb.active
# 重新命名sheet
ws1.title = "range names"

# 循环写入数据
for row in range(1, 40):
    # 从工作表的底部追加值
    ws1.append(range(600))

# 新建sheet
ws2 = wb.create_sheet(title="Pi")

# 在指定单元格当中写入数据
ws2['F5'] = 3.14


ws3 = wb.create_sheet(title="Data")

for row in range(10, 20):
    for col in range(27, 54):
        # 用cell方法写入数据
        _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))

# 取单元格中的值
print(ws3['AA10'].value)

# 保存文件
wb.save(filename = dest_filename)


from openpyxl import load_workbook

# 打开已经创建好的excel文件
wb = load_workbook(filename = 'empty_book.xlsx')
# 通过名称指定sheet
sheet_ranges = wb['range names']
# 读取指定单元格中的值
print(sheet_ranges['D18'].value)
"""
接口测试测试用例
表头:用例编号、请求方式、url、预期结果、实际结果
"""
import requests
from openpyxl import Workbook
from openpyxl.reader.excel import load_workbook


def creat_testcase():
    wb = Workbook()
    sheet = wb.worksheets[0]
    sheet.title = "test_case"
    case_title = ["用例编号","请求方式","url","预期结果","实际结果"]
    sheet.append(case_title)

    # 单元格插入数据
    sheet["A2"] = 1
    sheet["B2"] = "GET"
    sheet["C2"] = "https://www.baidu.com"
    sheet["D2"] = "baidu"

    for row in range(3,8):
        for col in range(1, 5):
            if col == 1:
                sheet.cell(row=row, column=col,value=row-1)
            elif col == 2:
                sheet.cell(row=row, column=col,value="GET")
            elif col == 3:
                sheet.cell(row=row, column=col, value="https://www.baidu.com")
            else:
                sheet.cell(row=row, column=col, value="baidu")

    wb.save("cases.xlsx")
    wb.close()

def read_testcase():
    wb = load_workbook("cases.xlsx")
    sheet = wb.worksheets[0]

    case_num = sheet.max_row

    interface_list = []

    for row in range(2, case_num +1):
        r1 = []
        for col in range(2, 5):
            if col == 2:
                method = sheet.cell(row, col).value
                r1.append(method)
            elif col == 3:
                url = sheet.cell(row, col).value
                r1.append(url)
            else:
                expected = sheet.cell(row, col).value
                r1.append(expected)

        interface_list.append(r1)
    return interface_list


def write_result(test_result):
    wb = load_workbook("cases.xlsx")
    sheet = wb.worksheets[0]

    for row in range(2, 8):
        sheet.cell(row=row, column=5, value=test_result[row-2])

    wb.save("cases.xlsx")

    wb.close()

def test_baidu():
    creat_testcase()
    interface_list = read_testcase()

    test_result = []

    for i in interface_list:
        r = requests.request(method=i[0], url=i[1])
        print(r.text)
        try:
            assert i[2] in r.text
            test_result.append('pass')
        except:
            test_result.append('fail')
    print(test_result)
    write_result(test_result)