測(cè)試平臺(tái)開發(fā)

常用技術(shù)架構(gòu)與組件

前端技術(shù)架構(gòu) bootstrap antd vue react
后端技術(shù)架構(gòu) django flask spring boot
數(shù)據(jù)存儲(chǔ) mysql es neo4j
任務(wù)調(diào)度架構(gòu) jenkins
數(shù)據(jù)報(bào)表 echarts vega kibana grafana


測(cè)試平臺(tái)基本流程

后端開發(fā)主要技術(shù)點(diǎn)

  • 頁(yè)面渲染:客戶端渲染頁(yè)面(SPA) 服務(wù)端渲染頁(yè)面(模板技術(shù))
  • 數(shù)據(jù)庫(kù)連接技術(shù):數(shù)據(jù)庫(kù)連接池 數(shù)據(jù)訪問
  • 服務(wù)管理:接口 路由 協(xié)議
  • 異步任務(wù)調(diào)度:異步 同步 回調(diào)
開發(fā)框架
  • 迷你型
    • python Flask
    • java sparkjava
  • 大而全的框架
    • python django
    • java spring全家桶
Flask
  • 路由:get post path 權(quán)限控制
  • 請(qǐng)求: get請(qǐng)求 form請(qǐng)求 json請(qǐng)求 cookie管理
  • session: 基于cookie的session機(jī)制
  • 模板技術(shù):jinjia2 mustache 建議使用獨(dú)立的前端技術(shù)框架構(gòu)建SPA
from flask import Flask,escape,request

app=Flask(__name__)

@app.route('/')
def hello():
    name=request.args.get("name","World")
    return f'Hello ,{escape(name)}!'

運(yùn)行方法:

set FLASK_APP=test_flask.py
flask run

訪問方法:


訪問效果
數(shù)據(jù)持久化

傳統(tǒng)數(shù)據(jù)庫(kù)連接方式:pymysql 純sql
ORM模型:sqlalchemy mybatis hebernate

pymysql

connect cursor(游標(biāo)) excute(執(zhí)行) fetch(獲取結(jié)果)

import pymysql

db = pymysql.connect(host='localhost',
                     user='user',
                     password='password',
                     db='db',
                     charset='utf8mb4',
                     cursorclass=pymysql.cursors.DictCursor)

def test_db():
    with db.cursor() as cursor:
        #create a new record
        sql = 'show tables'
        cursor.excute(sql)
        res=cursor.fetchall()
        print(res)

def test_select():
    with db.cursor() as cursor:
        #create a new record
        sql = 'select * from table1 where name=%s'
        cursor.excute(sql,["name1"])
        res=cursor.fetchall()
        print(res)
ORM 對(duì)象關(guān)系映射(object-relational mapping)

簡(jiǎn)介
是一種程序設(shè)計(jì)技術(shù)仪糖,用于實(shí)現(xiàn)面向?qū)ο缶幊陶Z言里不同類型系統(tǒng)的數(shù)據(jù)之間的轉(zhuǎn)換。從效果上說,它其實(shí)是創(chuàng)建了一個(gè)可在編程語言里使用的“虛擬對(duì)象數(shù)據(jù)庫(kù)”
ORM模型,脫離SQL吼鳞,編程模式


連接池管理
from sqlalchemy import create_eninge
from sqlalchemy import Column,Integer,String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

host='localhost'
user='username'
password='password'
db='dbname'
charset='utf8mb4'

Base=declarative_base()

#聲明表結(jié)構(gòu)
class User(Base):
    __tablename__ ='tablename1'
    id = Column(Integer,primary_key=True)
    username=Column(String)
    password=Column(String)
    email=Column(String)

def test_orm():
    engine = create_eninge('mysql+pymysql"http://{user}:{password}@{host}/{db}'.format(host=host,db=db,user=user,password=password),echo=True)
    #sessionmaker 創(chuàng)建連接
    Session = sessionmaker(bind=engine)
    session=Session()
    #數(shù)據(jù)插入
    u1=User(
        username='name1',
        password='pwd1',
        email='123@123'
    )
    session.add(u1)
    session.commit()
    #數(shù)據(jù)查詢
    u2=session.query(User).filter_by(username='name1').first()
    print(u2.username)

前端開發(fā)主要技術(shù)點(diǎn)

vue.js框架

  • vue.js是一套用于構(gòu)建用戶界面的漸進(jìn)式框架
  • 被設(shè)計(jì)成自頂向上逐層應(yīng)用
  • 核心庫(kù)只關(guān)注視圖層,不僅易于上手参滴,還便于與第三方庫(kù)或既有項(xiàng)目整合
  • 學(xué)習(xí)vue.js 需要一定的html、css摆寄、javascript基礎(chǔ)
    MVVM模式

    常用組件庫(kù)
    ElementUI:https://element.eleme.io/#/
    Bootstrap Vue:https://bootstrap-vue.org/
    Vuetify:https://vuetifyjs.com/zh-Hans/
    安裝方法
    1.cdn
使用最新版
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
使用明確版本號(hào)和構(gòu)建文件,避免新版本造成的不可預(yù)期的破壞
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>

2.npm
通過webpack和CLI安裝使用
使用

  • 創(chuàng)建掛載元素
  • 引入vue.js
  • 創(chuàng)建一個(gè)vue實(shí)例
<html>
<body>
<div id="app">
    {{msg}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            msg:'hello world123'
        }
    })
</script>
</body>
</html>

vue內(nèi)部指令

  • v-if v-else 元素是否存在 不存在的話不會(huì)在dom元素中展示
  • v-show 元素是否顯示 不管是否顯示都會(huì)在dom元素中展示
  • v-for 循環(huán)
  • v-on 綁定事件 可以簡(jiǎn)寫成@
  • v-bind 綁定動(dòng)態(tài)屬性 可以簡(jiǎn)寫成:
  • v-model 綁定數(shù)據(jù) 可以綁定數(shù)據(jù),若是數(shù)據(jù)發(fā)生更改疾党,也隨之更改
<html>
<body>
<div id="app">{{msg}}
    <div v-if="show">展示</div>
    <div v-else>不展示</div>
    <div v-show="show">show展示</div>
    <p v-for="(value,index) in arr">{{value}}:{{index}}</p>
    <p v-for="(value,key) in obj">{{value}}:{{key}}</p>
    <p v-for="value in obj1">{{value.name}}:{{value.age}}:{{value.sex}}</p>
    <!-- v-on 可以簡(jiǎn)寫成@ <button @:click="add">加一</button> -->
    <button v-on:click="add">加一</button>
    <div>{{count}}</div>
    <!---v-bind可以簡(jiǎn)寫成冒號(hào)的方式 <div style="height:100px;width:100px;border:1px solid #000" v-bind:style="bgcolor"></div> -->
    <div style="height:100px;width:100px;border:1px solid #000" :style="bgcolor"></div>
    <input type="text" v-model="text">
    <button @click="showtext">打印</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            msg:'hello world123',
            show:false,
            arr:['a','b'],
            obj:{'name':'zhangsan','age':20,'sex':'男'},
            obj1:[{'name':'A1','age':20,'sex':'男'},{'name':'A2','age':21, 'sex':'女'},{'name':'A3','age':22,'sex':'男'}],
            count:1,
            bgcolor:{ backgroundColor: '#ccc'},
            text:'123'
        },
        methods:{
            add(){ this.count++ },
            showtext(){console.log(this.text)}
        }
    })
</script>
</body>
</html>

vue生命周期

  • beforeCreate
  • created
  • beforeMount 在dom元素加載完成之前
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed
    用法示例:
<script>
    new Vue({
        el:'#app',
        data:{ msg:'hello world123', },
        methods:{
            showtext(){console.log(this.text) } },
        created(){
            console.log('加載完成')
        }
    })

vue-cli
基于webpack構(gòu)建,并帶有合理的默認(rèn)配置
webpack是一個(gè)javascript應(yīng)用程序的靜態(tài)模塊打包器

技術(shù)棧

  • vue.js 前端頁(yè)面數(shù)據(jù)渲染
  • vue-router 路由管理
  • vurtify ui組件
  • axios 網(wǎng)絡(luò)請(qǐng)求
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末暴心,一起剝皮案震驚了整個(gè)濱河市姐浮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌超歌,老刑警劉巖砍艾,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異巍举,居然都是意外死亡脆荷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門懊悯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜓谋,“玉大人,你說我怎么就攤上這事炭分√一溃” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵欠窒,是天一觀的道長(zhǎng)覆旭。 經(jīng)常有香客問我,道長(zhǎng)岖妄,這世上最難降的妖魔是什么型将? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮荐虐,結(jié)果婚禮上七兜,老公的妹妹穿的比我還像新娘。我一直安慰自己福扬,他們只是感情好腕铸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布惜犀。 她就那樣靜靜地躺著,像睡著了一般狠裹。 火紅的嫁衣襯著肌膚如雪虽界。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天涛菠,我揣著相機(jī)與錄音莉御,去河邊找鬼。 笑死俗冻,一個(gè)胖子當(dāng)著我的面吹牛礁叔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迄薄,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼琅关,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了讥蔽?” 一聲冷哼從身側(cè)響起涣易,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勤篮,沒想到半個(gè)月后都毒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體色罚,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碰缔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戳护。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片金抡。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腌且,靈堂內(nèi)的尸體忽然破棺而出梗肝,到底是詐尸還是另有隱情,我是刑警寧澤铺董,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布巫击,位于F島的核電站,受9級(jí)特大地震影響精续,放射性物質(zhì)發(fā)生泄漏坝锰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一重付、第九天 我趴在偏房一處隱蔽的房頂上張望顷级。 院中可真熱鬧,春花似錦确垫、人聲如沸弓颈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翔冀。三九已至导街,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纤子,已是汗流浹背菊匿。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留计福,地道東北人跌捆。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像象颖,于是被迫代替她去往敵國(guó)和親佩厚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容