前言:Deploy Test是基于Jenkins構(gòu)建代碼到測試環(huán)境或生產(chǎn)環(huán)境前的一步接口自動化執(zhí)行動作。
也可以理解成每次發(fā)版都要執(zhí)行一遍Deploy接口自動化,執(zhí)行通過才能到下一步開發(fā)代碼發(fā)到生產(chǎn)。
code編譯->預(yù)發(fā)布環(huán)境?->Deploy Test (通過,無failtrue)->code發(fā)目標環(huán)境
一.代碼思路
思路:不繁瑣,可以實現(xiàn)代碼已發(fā)布成功的測試
測試方式定義:每個項目只要接口測試通過。
接口代碼選型和框架:python3+unittest+request
二.編寫

例子,代碼:
Case.py
import json
import requests
import unittest
class RunMain:
? ? def send_post(self, url, data, headers=None):
? ? ? ? result = requests.post(url=url, headers=headers, data=data).json()
? ? ? ? res = json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2)
? ? ? ? res = json.loads(res)
? ? ? ? return res
? ? def send_get(self, url, headers):
? ? ? ? result = requests.get(url=url, headers=headers)
? ? ? ? res = json.loads(result.text)
? ? ? ? return res
? ? def run_main(self, method, *args):
? ? ? ? result = None
? ? ? ? if method == 'post':
? ? ? ? ? ? result = self.send_post(*args)
? ? ? ? elif method == 'get':
? ? ? ? ? ? result = self.send_get(*args)
? ? ? ? else:
? ? ? ? ? ? print("請求類型錯誤?。。。。。。。?!")
? ? ? ? return result
class TestRun(unittest.TestCase, RunMain):
? ? # def setUp(self):
? ? #? ? # self.run_main1 = RunMain()? ? ? # 測試用例必須以test開頭
? ? #? ? pass
? ? # def tearDown(self):
? ? #? ? pass
? ? '''************公共接口****************\n'''
? ? def test_login(self):
? ? ? ? '''登陸'''
? ? ? ? global token
? ? ? ? headers = {"project-id": "1", "erp-version": "1.6", "Connection": "keep-alive", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"}
? ? ? ? url = 'http://host/api/admin/login'
? ? ? ? data = {
? ? ? ? ? ? "username": "jiangjiahao",
? ? ? ? ? ? "password": "abc456456",
? ? ? ? ? ? "channel": "2"
? ? ? ? }
? ? ? ? res = self.run_main('post', url, data, headers)
? ? ? ? token = res['data']['token']
? ? ? ? # print("token:", token)
? ? ? ? self.assertEqual(res['code'], 0, "公共接口檢查錯誤!")
? ? def test_get_project_list(self):
? ? ? ? '''獲取驗證碼'''
? ? ? ? url = 'http://host/api/erp/erp/project/getlist?'
? ? ? ? headers = {"token": token, "project-id": "1", "erp-version": "1.6", "crm-version": "1.0"}
? ? ? ? res = self.run_main("get", url, headers)
? ? ? ? self.assertEqual(res['code'], 0, "獲取項目列表有異常??!")
? ? '''************CRM模塊****************\n'''
? ? def test_get_member_list(self):
? ? ? ? '''獲取會員列表'''
? ? ? ? url = 'http://host/api/crm/crm/member/index?_page=1&_page_size=10'
? ? ? ? headers = {"token": token, "project-id": "1", "erp-version": "1.6", "crm-version": "1.0"}
? ? ? ? res = self.run_main("get", url, headers)
? ? ? ? self.assertEqual(res['code'], 0, "獲取會員列表有異常!!")
? ? def test_get_vouchers_list(self):
? ? ? ? '''獲取卡劵列表'''
? ? ? ? url = 'http://host/api/erp/erp/index/deal?_page=1&_page_size=5&tab=3'
? ? ? ? headers = {"token": token, "project-id": "1", "erp-version": "1.6", "crm-version": "1.0"}
? ? ? ? res = self.run_main("get", url, headers)
? ? ? ? self.assertEqual(res['code'], 0, "獲取卡劵列表有異常!!")
? ? '''************ERP模塊****************\n'''
? ? def test_get_deal_list(self):
? ? ? ? '''獲取待辦列表'''
? ? ? ? url = 'http://host/api/crm/crm/vouchers/index?name=&type=0&status=0&vouchers_type=0&_page=1&_page_size=10&audit_status='
? ? ? ? headers = {"token": token, "project-id": "1", "erp-version": "1.6", "crm-version": "1.0"}
? ? ? ? res = self.run_main("get", url, headers)
? ? ? ? self.assertEqual(res['code'], 0, "獲取代辦列表有異常?。?)
? ? def test_get_contract_list(self):
? ? ? ? '''獲取合同列表'''
? ? ? ? url = 'http://host/api/erp/erp/contract/index?_page=1&_page_size=10'
? ? ? ? headers = {"token": token, "project-id": "1", "erp-version": "1.6", "crm-version": "1.0"}
? ? ? ? res = self.run_main("get", url, headers)
? ? ? ? self.assertEqual(res['code'], 0, "獲取合同列表有異常??!")
? ? '''************公眾號模塊****************\n'''
? ? def test_login_getCode_list(self):
? ? ? ? '''登陸發(fā)送驗證碼'''
? ? ? ? url = 'http://host/wechat/wechat/user/login/getCode?mobile=18682436420'
? ? ? ? Cookie = "unionid=; isGiftBagGeg=1; is_first_login=0; mobile=18682436420; token=%s" % token
? ? ? ? headers = {"Cookie": Cookie, "token": token, "project-id": "1", "erp-version": "1.6", "crm-version": "1.0", "app-system": "1", "app-version": "1"}
? ? ? ? res = self.run_main("get", url, headers)
? ? ? ? self.assertEqual(res['code'], 0)
? ? ? ? self.assertEqual(res['msg'], "驗證碼已發(fā)送", "登陸發(fā)送驗證碼有異常??!")
? ? def test_user_me(self):
? ? ? ? '''獲取個人信息'''
? ? ? ? Cookie = "unionid=; isGiftBagGeg=1; is_first_login=0; mobile=18682436420; token=%s" % token
? ? ? ? url = 'http://host/api/user/me/index?'
? ? ? ? headers = {"Cookie": Cookie, "token": token, "project-id": "1", "erp-version": "1.6", "crm-version": "1.0", "app-system": "1", "app-version": "1"}
? ? ? ? res = self.run_main("get", url, headers)
? ? ? ? self.assertEqual(res['code'], 0, "獲取個人信息有異常??!")
執(zhí)行入口 Run_Depoly.py
import unittest
from caseimport TestRun
suite = unittest.TestSuite()
suite.addTest(TestRun("test_login"))
suite.addTest(TestRun("test_get_project_list"))
suite.addTest(TestRun("test_get_member_list"))
suite.addTest(TestRun("test_get_vouchers_list"))
suite.addTest(TestRun("test_get_deal_list"))
suite.addTest(TestRun("test_get_contract_list"))
suite.addTest(TestRun("test_user_me"))
unittest.TextTestRunner(verbosity=3).run(suite)
執(zhí)行命令:python?Run_Depoly.py