1. 程式人生 > >Python xlrd/xlwt對excel進行操作

Python xlrd/xlwt對excel進行操作

摘要:
python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。

主要內容:

先上程式碼
automation_interface.py :

# -*- coding:utf-8 -*-
import xlrd
import xlwt
import automation_method


# excel 操作
class AutoTest:
    def __init__(self):
        pass

    # xlrd讀取資料
    def read_text(self):
        data_xls = []
        xls = xlrd.open_workbook(u"介面自動化測試用例.xlsx"
) table = xls.sheet_by_name(u"介面測試報告") num_row = table.nrows for i in range(num_row): id = table.row(i)[0].value title = table.row(i)[1].value body = table.row(i)[2].value parameter = table.row(i)[3].value expect_result = table.row(i)[4
].value actual_result = table.row(i)[5].value test_result = table.row(i)[6].value data = (id, title, body, parameter, expect_result, actual_result, test_result) data_xls.append(data) return data_xls # xlwt寫入資料 def write_text(self): wbk = xlwt.Workbook(encoding='utf-8'
) sheet = wbk.add_sheet(u'介面測試報告') read_xls = self.read_text() for i in range(len(read_xls)): for m in range(len(read_xls[i])): if m == 5 and i > 3: sheet.write(i, m, str(automation_method.test_interface(read_xls[1][1], read_xls[i][2], read_xls[i][3], read_xls[1][3]))) else: sheet.write(i, m, read_xls[i][m]) wbk.save(u"介面自動化測試用例.xlsx") if __name__ == '__main__': a = AutoTest() a.write_text()

automation_method.py :

# -*- coding:utf-8 -*-
from binascii import a2b_hex
from Crypto.Cipher import AES
from Crypto import Random
import requests
import os


# AES加密
def aes(timestamp):
    BS = 16
    pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
    key_str = "D8EF40495D6C6CD171BFA4403516B035"
    plain = timestamp
    iv = Random.new().read(AES.block_size)
    obj = AES.new(a2b_hex(key_str),AES.MODE_ECB,iv)
    plain = pad(plain)
    result = obj.encrypt(plain).encode("hex").upper()
    return result


# APP介面請求
def test_interface(head_app, body, payload, parameter_app):
    url = head_app + str(body) + "?" + str(payload) + parameter_app
    headers = {'content-type': 'application/json'}
    try:
        r = requests.post(url, headers=headers)
        return r.json()
    except:
        return {"status": url}


# kill WPS
def kill_wps():
    cmd = 'taskkill /F /IM wpscloudsvr.exe'
    os.system(cmd)

對應的excel:
這裡寫圖片描述

總結:
做了一年的介面測試以及介面自動化測試,想把這方面的工作簡單化,讓不懂程式碼的測試人員也可以進行該方面的工作,寫一個基於excel介面測試自動化工具,最後以失敗告終,主要原因還是因為介面請求引數不確定性,以及引數是其他介面返回值,對於這個難點,後期下定決心了再進行下去。

陽臺測試: 239547991(群號)