前言
編寫正常的測試用例,一般都是通過excel進行編寫的,當我們進行編寫自動化測試用例的時,也是通過功能用例進行編寫的,那么有沒有方法直接通過python讀取我們的excel然后完成自動化測試用例編寫。


整體思路
1.通過Excel編寫測試用例,整理測試數據;
2.通過Python讀取Excel數據;
3.將讀出來的數據進行放入到requests中進行請求并做對應斷言。
整體思路其實很簡單,就是通過python讀取Excel然后在導入我們的requests中進行做接口自動化。


通過Excel編寫用例
安靜在網上找了一些開源的接口進行編寫到Excel中,由于接口比較簡單,就寫了用例標題、url地址、請求方法、請求參數、預期結果等操作。


讀取Excel
在python讀取Excel的方法有很多,這里安靜就介紹最常用的庫xlrd xlrd可以進行完成對Excel的讀取。xlrd屬于Python的第三方庫,需要重新安裝。
安裝:
pip install xlrd
通過上面的Excel通過Excel完成讀取操作。
import xlrd
# 將excel進行實例化
book = xlrd.open_workbook(‘E:web123.xlsx’)
# 通過下標方法讀取sheet值
sheet = book.sheet_by_index(0)
# 通過name值進行讀取sheet
# sheet = book.sheet_by_name(‘Sheet1’)
# 獲取列表的總數
nrows = sheet.nrows
# 循環讀取每行數據
for i in range(1, nrows):
# 通過每行進行讀取數據
# print(sheet.row_values(i))
# 將數據通過組合成dic+t格式
data = dict(zip(sheet.row_values(0), sheet.row_values(i)))
print(data)
安靜在上面簡單的介紹了讀取數據的方法,上述代碼中通過字典的形式獲取到了excel的全部數據內容。
PS:這里通過字典的形式獲取為了下面使用時好取值。


request請求用例
前面已經把用例需要用到的數據都已經存儲下來了,那么接下來的就是需要進行發送請求。
這里通過requests的方式進行發送請求。先將requests請求進行簡單的封裝。通過把請求方式、請求類型、請求參數放入到requests中。
def Requests_result(item):
# 封裝request請求,并讀取數據
response = requests.request(
method=item[‘method’],
url=item[‘url’],
data=json.loads(item[‘body’])
)
result = response.json()[‘reason’]
# 這里返回實際結果是否和預期值一樣
return result == item[‘expect’]


整體代碼
pytest
上面已經將各個部分的內容都簡單的做了介紹了,這里就直接上整體代碼,這里通過requests+pytest+excel進行完成的讀取excel數據完成測試用例。
import xlrd
import requests
import json
import pytest
def Read_Excel():
# 將excel進行實例化
book = xlrd.open_workbook(‘E:web123.xlsx’)
# 通過下標方法讀取sheet值
sheet = book.sheet_by_index(0)
# 循環讀取每行數據
return [dict(zip(sheet.row_values(0), sheet.row_values(row))) for row in range(1, sheet.nrows)]
class Test_01:
def Requests_result(self, item):
# 封裝請求
response = requests.request(
method=item[‘method’],
url=item[‘url’],
data=json.loads(item[‘body’])
)
result = response.json()[‘reason’]
print(result)
return result == item[‘expect’]
# 通過參數化的方式進行導入excel的數據
@pytest.mark.parametrize(‘item’, Read_Excel())
def test_01(self, item):
response_result = self.Requests_result(item)
# 斷言請求返回的結果是否為True
assert response_result == True
if __name__ == ‘__main__’:
pytest.main([‘-vs’])
通過執行發現,我們的requests已經通過excel來完成了測試讀取測試用例。并通過單元測試-pytest完成了判斷是否通過。


unittest
上述方法是通過pytest來完成的,那么unittest當然也可以完成。這里通過requests+unittest+ddt+excel進行來完成讀取數據內容。
import xlrd
import requests
import json
import unittest
import ddt
def Read_Excel():
# 將excel進行實例化
book = xlrd.open_workbook(‘E:web123.xlsx’)
# 通過下標方法讀取sheet值
sheet = book.sheet_by_index(0)
# 循環讀取每行數據
return [dict(zip(sheet.row_values(0), sheet.row_values(row))) for row in range(1, sheet.nrows)]
@ddt.ddt
class Test_01(unittest.TestCase):
def Requests_result(self, item):
response = requests.request(
method=item[‘method’],
url=item[‘url’],
data=json.loads(item[‘body’])
)
result = response.json()[‘reason’]
return result
# 通過ddt進行讀取數據
@ddt.data(*Read_Excel())
def test_01(self, data):
response_result = self.Requests_result(data)
self.assertTrue(response_result)
if __name__ == ‘__main__’:
unittest.main()
執行發現,通過unittest的也成功的讀取了excel的數據以及完成了接口內容。
總結
這里安靜簡單的介紹了如何通過python進行讀取excel的方法從而實現了接口自動化的類似操作,當然如何運用到公司項目中,這個要看根據公司的項目來做了。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。