介面自動化(四):框架搭建(Python)
測試指令碼:
測試指令碼,和我前幾期講的差不多,就是發請求,斷言,不過這裡有個新東西和大家說下,就是sessionID 問題,因為實際工作中有好多請求就是依賴這些東西,我這裡是更新使用者資訊,需要使用者登入返回來的 sessionID ,直接上程式碼:
import os
from HTMLTestRunner import HTMLTestRunner
import requests
import unittest
import csv
class test_updateuser_v3(unittest.TestCase):
#unittest 框架中 setUp 方法是在每個測試 case 前都執行一遍
def setUp(self):
# 獲取當前路徑,如果路徑混亂時,大家可以 print 列印去除錯
path = os.getcwd()
# 一個點上一級 兩個點上上一級
p1 = os.path.abspath(os.path.dirname(path) + os.path.sep + ".")
self.fpath = p1 + "\\testdatafile\ind_interface\\test_updateuser.csv"
print(self.fpath)
self.file = open(self.fpath, 'r')
table = csv.reader(self.file)
userinfo = {}
拿到登入的使用者名稱和登入密碼,所以這裡引數寫死掉了
for row in table:
url = row[0]
userinfo[row[3]] = row[4]
userinfo[row[5]] = row[6]
break
response = requests.post(url, data=userinfo)
# 拿到登入返回來的 jsessionid
self.sessionID = dict(response.cookies)['JSESSIONID']
self.file.close()
# 更新使用者資訊, unittest 框架中測試方法必須以 test 開頭
def test_03(self):
self.file2 = open(self.fpath, 'r')
# 這裡為什麼是 num=0 呢,是因為檔案的第一行是登入請求 url, 所以我第一行要跳過,下面做判斷用
num = 0
table = csv.reader(self.file2)
for row in table:
userinfo = {}
# 第一行就跳過了
num = num + 1
if num > 1:
# 拿到 url
url = row[0]
# 拿到引數個數,類似我前幾篇方法一樣,我就不一一解釋了
j = int(row[2])
expresult = row[1]
for i in range(3, 2 * j + 3, 2):
userinfo[row[i]] = row[i + 1]
# print(userinfo)
session = {'JSESSIONID': self.sessionID}
# 這裡多了 cookies 引數,請注意
response = requests.post(url, data=userinfo, cookies=session).text
print(response)
# 這裡斷言:外匯跟單gendan5.com判斷 response 裡面是否有更新個人資訊成功欄位,比 if 簡單多了
self.assertIn(" 更新個人資訊成功 ", response)
self.file2.close()
該指令碼放在script 目錄下面的 ind_interface
啟動主函式
主要記錄了怎麼去按照配置檔案裡面的標識去執行指令碼:
import csv
import operator
import os
import unittest
# 這裡用 HTMLTestRunner 生成報告,需要把該 python 檔案放到專案目錄下面
from HTMLTestRunner import HTMLTestRunner
if __name__ == '__main__':
path = os.getcwd()
p2 = os.path.abspath(os.path.dirname(path) + os.path.sep + ".")
# 報告名字
filename = p2 + "\\testresultfile\ind_interface\\test_updatauser_report.html"
# 以二進位制寫報告
report=open(filename,'wb')
file = open('D:\Learn\\automation\interfaceframework\config\config.csv', 'r')
# 下面註釋的兩行是獲取配置檔案裡一共多少行
# line=len(open('D:\Learn\\automation\interfaceframework\config\config.csv').readlines())
# print(line)
table = csv.reader(file)
lis = []
n = 0
dic = {}
for row in table:
# 跳過第一行
if n > 0:
dic = {}
# 拿到測試指令碼路徑,測試指令碼名稱
dic[row[1]] = row[0]
# 拿到測試順序
dic['num'] = row[3]
# 拿到測試狀態:即是否執行
dic['state']=row[2]
# print(dic)
if dic != {}:
# 把他們裝到列表裡面
lis.append(dic)
#n 為 csv 行數
n = n + 1
# 這裡是把列表按照 num 排序
dicn = sorted(lis, key=operator.itemgetter('num'))
# 給大家看下 dicn 結果排序內容:
#[{'test_updateuser_v2.py': 'D:\\Learn\\automation\\interfaceframework\\script\\ind_interface', 'num': '1', 'state': 'YES'}, {'test_updateuser_v3.py': 'D:\\Learn\\automation\\interfaceframework\\script\\ind_interface', 'num': '2', 'state': 'YES'}]
# print(dicn)
# 相當於迴圈配置檔案了
for i in range(0, n - 1):
m = 0
# 拿到字典裡的值
for content in dicn[i].items():
if m == 0:
# 拿到測試檔名,測試檔案路徑
fname = content[0]
fpath = content[1]
print(fname, fpath)
if m==2:
state=content[1]
# 判斷是否執行該指令碼
if state=='YES':
# 載入測試 case
discover = unittest.defaultTestLoader.discover(fpath, pattern=fname)
runner = HTMLTestRunner(stream=report, title=" 測試報告 ", description=" 更新介面 ")
# 執行載入的測試案例
runner.run(discover)
m = m + 1
report.close()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2765754/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 四.unittest介面自動化框架介紹框架
- 介面自動化實戰之框架搭建框架
- 介面自動化測試框架搭建的思路框架
- 介面自動化測試框架搭建總結框架
- 【python介面自動化】初識unittest框架Python框架
- pytest+request+allure 介面自動化框架搭建分享框架
- Python+Pytest+Allure+Jenkins 介面自動化框架PythonJenkins框架
- <討論>2020年 的 python 介面自動化框架Python框架
- Python+Pytest+Allure+Git+Jenkins介面自動化框架PythonGitJenkins框架
- 基於Python+requests搭建的自動化框架-實現流程化的介面串聯Python框架
- python 介面自動化Python
- Jmeter+Ant+Jenkins介面自動化測試框架搭建for WindowsJMeterJenkins框架Windows
- 基於Python3.7 Robot Framework自動化框架搭建PythonFramework框架
- Java語言搭建介面自動化框架學習八(鑑權)Java框架
- 介面自動化測試框架 HttpFPT框架HTTP
- 學會Python+Selenium,分分鐘搭建Web自動化框架!PythonWeb框架
- Java語言搭建介面自動化框架學習一(單介面請求和響應)Java框架
- Python 介面自動化測試Python
- Python + requests + unittest + ddt 進行介面自動化測試的框架Python框架
- python介面自動化測試 —— unittest框架suite、runner詳細使用Python框架UI
- Jmeter+Ant+Jenkins介面自動化框架JMeterJenkins框架
- python自動化框架pytest隨筆Python框架
- Python自動化測試框架-pytestPython框架
- Python 自動化測試框架unittestPython框架
- Jmeter+Ant+Jenkins介面自動化框架(續)JMeterJenkins框架
- 基於Python的介面自動化-unittest測試框架和ddt資料驅動Python框架
- python 介面自動化 -- 依賴資料Python
- Python自動化測試框架介紹Python框架
- Python介面自動化——檔案上傳/下載介面Python
- Linux下搭建介面自動化測試平臺Linux
- 肖sir__介面測試之python+rquest+unittest分層自動化框架Python框架
- 記錄python介面自動化測試--unittest框架基本應用(第二目)Python框架
- 介面自動化-python+requests+pytest+csv+yamlPythonYAML
- 【python介面自動化】- logging日誌模組Python
- Jmeter+Ant+Python 介面自動化測試JMeterPython
- 【python介面自動化】- PyMySQL資料連線PythonMySql
- python--介面自動化鑑權例項Python
- 【python介面自動化】- 正則用例引數化Python