含有token鑑權的介面專案使用unittest框架設計測試登入,充值的介面
專案需求:根據介面文件要求:
登入 伺服器會返回token值
充值 充值時需要傳入token值進行鑑權處理,才能充值成功
在用unittest框架測試時,若要設計充值的用例,充值的請求引數一定要先拿到登入時的token值以及id,才能進行充值處理,(充值要依賴登入時token值,和id值)
處理思路
1.首先把公共資料單獨抽出來,用一個檔案去管理,如yaml檔案
2.寫一個讀yaml檔案的get_token()函式放到re_token.py,去讀取需要的資料
3.其它指令碼全部呼叫re_token.py裡面的get_token()函式,然後傳參
4.token動態獲取可以寫個登入函式放到run.py,獲取到之後把token值寫入到yaml檔案,這樣保證每次token都是最新的
5.run.py裡面在執行所有用例之前先登入一次並寫入token到yaml,然後執行所有用例,出報告結果
設計結構如下:
讀取token,程式碼re_token.py
# coding:utf-8
import yaml
import os
cur = os.path.dirname(os.path.realpath(__file__))
def get_token(value):
'''
從token.yaml讀取token值
:param yamlName: 配置檔名稱
:return: token值
'''
p = os.path.join(cur, "token.yaml")
f = open(p)
a = f.read()
t = yaml.load(a)
f.close()
return t[value]
if __name__ =="__main__":
print(get_token())
充值用例
test_recharge.py
from class_18_report.common.re_token import get_token
import unittest
import requests
class TestRecharge(unittest.TestCase):
def test_recharge_success(self):
recharge_url = "http://120.78.128.25:8766/futureloan/member/recharge"
headers = {"X-Lemonban-Media-Type": "lemonban.v2", "Authorization": "Bearer {}".format(get_token("token"))}
data = {
"member_id": get_token("id"),
"amount": 100
}
res = requests.post(recharge_url, json=data, headers=headers)
print(res.json())
print("充值成功!。。。。。。。")
expect ={'code':0}
self.assertEqual(res.json()['code'],expect['code'])
一次性執行多個用例指令碼,都呼叫同一個token值,run_test.py指令碼參考如下
import os
import unittest
import requests
import yaml
#1, 初始化 testloader
import time
from ruamel import yaml
from class_18_report.HTMLTestRunnerNew import HTMLTestRunner
from class_18_report.test_cases import test_login, test_register
from class_18_report.test_cases.test_login import TestLogin
from class_18_report.test_cases.test_rechage import TestRecharge
from class_18_report.test_cases.test_register import TestRegister
curpath = os.path.dirname(os.path.realpath(__file__))
# def write_yaml(value):
# '''
# 把獲取到的token值寫入到yaml檔案
# :param value:
# :return:
# '''
url = 'http://120.78.128.25:8766/futureloan/member/login'
headers = {"X-Lemonban-Media-Type": "lemonban.v2"}
data = {"mobile_phone": "13712341280", "pwd": "12345678"}
res = requests.post(url, json=data, headers=headers)
print(res.json())
token = res.json()["data"]["token_info"]["token"]
id = res.json()["data"]["id"]
ypath = os.path.join(curpath, "common", "token.yaml")
print(ypath)
# 需寫入的內容
t = {"token": token,"id":id}
# 寫入到yaml檔案
with open(ypath, "w", encoding="utf-8") as f:
yaml.dump(t, f, Dumper=yaml.RoundTripDumper)
testloader = unittest.TestLoader()
# 2, 查詢測試用例,載入
dir_path = os.path.dirname(os.path.abspath(__file__))
case_path = os.path.join(dir_path, 'test_cases')
# suite = testloader.discover(case_path)
# 載入兩個模組當中的測試用例,儲存到測試套件當中
# suite = testloader.loadTestsFromModule(test_login)
# suite2 = testloader.loadTestsFromModule(test_register)
# 新增指定的測試類
suite = testloader.loadTestsFromTestCase(TestLogin)
suite2 = testloader.loadTestsFromTestCase(TestRecharge)
# 講這兩個測試套件合併新增到一個總的測試套件套件
suite_total = unittest.TestSuite()
suite_total.addTests(suite)
suite_total.addTests(suite2)
# suite = testloader.loadTestsFromName()
print(suite)
# report
report_path = os.path.join(dir_path, 'report')
if not os.path.exists(report_path):
os.mkdir(report_path)
# 什麼格式??加進去時間戳,可以動態生成測試報告time.time()是float型
ts = str(int(time.time())) # test_result_234.56.html
file_name = 'test_result_{}.html'.format(ts)
file_path = os.path.join(report_path, file_name)
# text.
# TODO: 一定要使用二進位制的方式開啟
with open(file_path, 'wb') as f:
# 使用 HTMLTestRunner
runner = HTMLTestRunner(f,
title="HTML格式的測試報告",
description='自動化生成的HTML測試報告',
tester='testing')
runner.run(suite_total)
相關文章
- 介面測試之unittest框架框架
- # RESTful登入(基於token鑑權)的設計例項REST
- python介面自動化測試 —— unittest框架suite、runner詳細使用Python框架UI
- QTP測試QQ登入介面QT
- Python + requests + unittest + ddt 進行介面自動化測試的框架Python框架
- 短影片app開發,可以借鑑的幾個登入介面設計APP
- 『居善地』介面測試 — 7、介面自動化測試框架的設計與實現框架
- 介面測試的獲取token變數變數
- 測試中,介面測試的必要性與介面測試的基礎用例設計
- 在介面測試中如何加密 token加密
- 介面測試框架Requests框架
- 『居善地』介面測試 — 13、Moco框架的使用框架
- 基於Python的介面自動化-unittest測試框架和ddt資料驅動Python框架
- 關於介面測試——自動化框架的設計與實現框架
- jwt與session的登入鑑權JWTSession
- 介面測試框架選擇框架
- Python中的單元測試框架:使用unittest進行有效測試Python框架
- 登入介面設計之一:總體
- APP登入介面UI設計欣賞APPUI
- 記錄python介面自動化測試--unittest框架基本應用(第二目)Python框架
- 肖sir__介面測試之python+rquest+unittest分層自動化框架Python框架
- 四.unittest介面自動化框架介紹框架
- 一個簡單的介面測試框架 demo框架
- 介面自動化測試框架搭建的思路框架
- Java介面程式設計實戰(一)——簡易QQ登入介面Java程式設計
- 介面測試裡的查詢介面要測試嗎
- 『居善地』介面測試 — 1、介面測試的概念
- 介面測試:生成Token,使用手機did生成accessToken,再用accessToken生成token 例項
- 介面測試入門篇
- Java微信授權登入小程式介面Java
- 有關介面測試的用例設計問題
- 測試開發【Mock平臺】04實戰:前後端專案初始化與登入鑑權實現Mock後端
- 介面測試的價值(為什麼要做介面測試)
- Java語言搭建介面自動化框架學習八(鑑權)Java框架
- [介面測試]通過Class檔案掃描來統計待測應用的介面數
- 【python介面自動化】初識unittest框架Python框架
- .NET專案開發—淺談面向介面程式設計、可測試性、單元測試、迭代重構(專案小結)程式設計
- Jmeter 登入使用了 jsencrypt 加密密碼的登入介面JMeterJS加密密碼