国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

測試開發(fā)實(shí)戰(zhàn)[提測平臺(tái)]15-實(shí)現(xiàn)提測單修改和郵件標(biāo)記

番茄西紅柿 / 3144人閱讀

摘要:繼續(xù)測試開發(fā)實(shí)戰(zhàn)系列的分享,本篇是對(duì)提測平臺(tái)的提測功能的編輯功能進(jìn)行實(shí)現(xiàn),主要重點(diǎn)是服務(wù)端更新接口中郵件內(nèi)容標(biāo)注邏輯實(shí)現(xiàn),和對(duì)前端上篇添加需求的基礎(chǔ)進(jìn)行適配改造。

微信搜索【大奇測試開】,關(guān)注這個(gè)堅(jiān)持分享測試開發(fā)干貨的家伙。

繼續(xù)測試開發(fā)實(shí)戰(zhàn)系列的分享,本篇是對(duì)提測平臺(tái)的提測功能的編輯功能進(jìn)行實(shí)現(xiàn),主要重點(diǎn)是服務(wù)端更新接口中郵件內(nèi)容標(biāo)注邏輯實(shí)現(xiàn),和對(duì)前端上篇添加需求的基礎(chǔ)進(jìn)行適配改造。

TPMServer

提測詳細(xì)查詢接口

根據(jù)提測ID,對(duì)數(shù)據(jù)表 request 和 apps 做聯(lián)合表查詢,返回需要詳細(xì)信息,此接口用于前端跳轉(zhuǎn)編輯提測頁面的數(shù)據(jù)回填。

# testmanager.py@test_manager.route("/api/test/info", methods=[GET])def getTestInfo():    test_id = request.args.get(id)    resp_success = format.resp_format_success    resp_failed = format.resp_format_failed    if not test_id:        resp_failed.message = 提測ID不能為空        return resp_failed    connection = pool.connection()    with connection.cursor() as cursor:        # 查詢產(chǎn)品信息表-按更新時(shí)間新舊排序        sql = "SELECT A.id as appId, A.appId as appName, R.id,R.title,R.developer,R.tester,R.CcMail,R.version,R.type,R.scope,R.gitCode,R.wiki,R.more FROM request as R , apps as A where R.appId = A.id AND R.isDel=0 AND R.id={}".format(test_id)        cursor.execute(sql)        data = cursor.fetchall()        if len(data) == 1:            resp_success[data] = data[0]    return resp_success

提測修改接口

提測更新接口,這里沒有像之前一樣放在一個(gè)方法里進(jìn)行處理,主要原因有個(gè)特殊邏輯處理,將接口代碼分開使得結(jié)構(gòu)能夠更清晰,這個(gè)特殊處理邏輯就需要對(duì)比下哪些是更改的內(nèi)容,然后如果在勾選了發(fā)送的的選項(xiàng)下,能夠?qū)⑵錁?biāo)明下,這樣才使得修改通知郵件有意義。這里邏輯上大致為:

1. 更改數(shù)據(jù)前先查詢暫存一個(gè)變量中A

2. 進(jìn)行數(shù)據(jù)庫更新,同時(shí)有變量B

3. 如果勾選了發(fā)郵件,發(fā)送內(nèi)容字段值進(jìn)行AB對(duì)比,不同則進(jìn)行背景高亮或者前后標(biāo)注處理,代碼中采用的是標(biāo)記 A.某內(nèi)容 變更為:B.某內(nèi)容

@test_manager.route("/api/test/update", methods=[POST])def updateReqeust():    # 獲取傳遞的數(shù)據(jù),并轉(zhuǎn)換成JSON    body = request.get_data()    body = json.loads(body)    # 定義默認(rèn)返回體    resp_success = format.resp_format_success    resp_failed = format.resp_format_failed    if appId not in body:        resp_failed[message] = appId 提測應(yīng)用不能為空        return resp_failed    elif tester not in body:        resp_failed[message] = tester 測試人員不能為空        return resp_failed    elif developer not in body:        resp_failed[message] = developer 提測人不能為空        return resp_failed    elif title not in body:        resp_failed[message] = title提測標(biāo)題不能為空        return resp_failed    # 使用連接池鏈接數(shù)據(jù)庫    connection = pool.connection()    with connection:        with connection.cursor() as cursor:            sql = "SELECT A.appId as appId, A.note as appName, R.id,R.title,R.developer,R.tester,R.CcMail,R.version,R.type,R.scope,R.gitCode,R.wiki,R.more FROM request as R , apps as A where R.appId = A.id AND R.isDel=0 AND R.id={}".format(                body[id])            cursor.execute(sql)            data = cursor.fetchall()            if len(data) == 1:                old_test_info = data[0]            else:                print(原有數(shù)據(jù)請(qǐng)求查詢異常!)        # 如果傳的值有ID,那么進(jìn)行修改操作,否則為新增數(shù)據(jù)        with connection.cursor() as cursor:            # 拼接修改語句,由于應(yīng)用名不可修改,不需要做重復(fù)校驗(yàn)appId            sqlUpdate = "UPDATE request SET title=%s,appId=%s,developer=%s,tester=%s,CcMail=%s,version=%s,`type`=%s," /                        "scope=%s,gitCode=%s,wiki=%s,`more`=%s,updateUser=%s,`updateDate`= NOW() WHERE id=%s"            cursor.execute(sqlUpdate, (                body["title"], body["appId"], body["developer"], body[tester], body["CcMail"], body["version"],                body["type"], body["scope"], body["gitCode"], body["wiki"], body["more"], body["updateUser"],                body["id"]))            # 提交執(zhí)行保存更新數(shù)據(jù)            connection.commit()            if isEmail in body and body[isEmail] == true:                # 新建成功發(fā)送Email                if body[type] == 1:                    rquest_type = 功能測試                elif body[type] == 2:                    rquest_type = 性能測試                elif body[type] == 3:                    rquest_type = 安全測試                receivers = body["tester"].split(,) + body["developer"].split(,)                if not body["CcMail"] is None:                    receivers = receivers + body["CcMail"].split(,)                subject = 【提測】 + body[title]                contents = []                contents.append()                if old_test_info and old_test_info[appName] != body[appName]:                    contents.append(old_test_info[appName] + 變更為: + body[appName])                else:                    contents.append(body[appName])                contents.append()                if old_test_info and old_test_info[developer] != body[developer]:                    contents.append(old_test_info[developer] + 變更為: + body[developer])                else:                    contents.append(body[developer])                contents.append()                if old_test_info and old_test_info[version] != body[version]:                    contents.append(old_test_info[version] + 變更為: + body[version])                else:                    contents.append(body[developer])                contents.append()                if old_test_info and old_test_info[scope] != body[scope]:                    contents.append(old_test_info[scope] + 變更為: + body[scope])                else:                    contents.append(body[scope])                contents.append()                if old_test_info and old_test_info[wiki] != body[wiki]:                    contents.append(old_test_info[wiki] + 變更為: + body[wiki])                else:                    contents.append(body[wiki])                contents.append()                if old_test_info and old_test_info[more] != body[more]:                    contents.append(old_test_info[more] + 變更為: + body[more])                else:                    contents.append(body[more])                reuslt = sendEmail(receivers, subject,contents)                if reuslt:                    sendOk = 1                else:                    sendOk = 2                with connection.cursor() as cursor:                    # 更新Emai是否發(fā)送成功1-成功 2-失敗                    updateEmail = "UPDATE request SET sendEmail=%s, updateUser=%s,`updateDate`= NOW() WHERE id=%s"                    cursor.execute(updateEmail, (sendOk, body["updateUser"], body[id]))                    # 提交修改郵件是否發(fā)送成功                    connection.commit()            else:                print(不發(fā)送郵件!)    return resp_success

以上是本次功能用到的兩個(gè)接口,測試請(qǐng)自行使用postman等工具進(jìn)行驗(yàn)證。

 

TPMWeb

定義請(qǐng)求接口

首先先定義好后端的接口請(qǐng)求,只需接著上次分享中的test.js中添加兩個(gè)請(qǐng)求 

 

編輯帶參跳轉(zhuǎn)與獲取

在提測列表頁面中增加點(diǎn)擊事件并實(shí)現(xiàn)方法,方法中這次采用URL帶參數(shù)的方式,如果還不了解Vue $router 跳轉(zhuǎn)的幾種方式,請(qǐng)參考之前這篇 測試開發(fā)【提測平臺(tái)】13遠(yuǎn)程搜索和路由$route使用實(shí)現(xiàn)新建提測需求,跳轉(zhuǎn)除了動(dòng)作參數(shù)值賦予“UPDATE”,另外還需要而外給選擇編輯數(shù)據(jù)的ID,用于跳轉(zhuǎn)后的再查詢,當(dāng)然也可以通過param隱式的將一行數(shù)據(jù)傳遞過去,但這里不太建議。

 

對(duì)于commit頁面不使用從上一頁拿整行的數(shù)據(jù),主要是考慮到這個(gè)頁面有可能會(huì)做刷新瀏覽器操作,如果是隱式數(shù)據(jù)就會(huì)丟失,而URL中的參數(shù)不會(huì),可以再次被取到,大家可以嘗試下區(qū)別。這里需要對(duì)原有action和新參數(shù)id判斷獲取值,并對(duì)提測信息進(jìn)行查詢初始化。 

 

提測詳細(xì)回填處理

getTestInfo的代碼邏輯是實(shí)現(xiàn)查詢并將所需要的字段值綁定 requestForm,另外這段代碼還需要做兩個(gè)特殊的處理,需要特別注意下:

1. 應(yīng)用的ID遠(yuǎn)程搜索下拉框綁定需要代碼觸發(fā)下查詢,用戶Label - value的回填

2. 延遲200~300秒在綁定appId,要不在跳轉(zhuǎn)的頁面的時(shí)候會(huì)有個(gè)小問題,就是先顯示appId,再顯示appName的一個(gè)過程,具體現(xiàn)象大家可以將setTimeout這個(gè)注釋掉,直接this.requestForm.appId = data.appId 做個(gè)對(duì)比。

getTestInfo() {  apiTestInfo(this.testId).then(response => {    const data = response.data    this.requestForm.id = data.id    this.requestForm.title = data.title    this.requestForm.developer = data.developer    this.requestForm.tester = data.tester    this.requestForm.CcMail = data.CcMail    this.requestForm.version = data.version    this.requestForm.type = data.type    this.requestForm.scope = data.scope    this.requestForm.gitCode = data.gitCode    this.requestForm.wiki = data.wiki    this.requestForm.more = data.more    this.requestForm.appName = data.appName    this.requestForm.isEmail = false    this.remoteMethod(data.appName)    // this.requestForm.appId = data.appId    setTimeout(() => {      this.requestForm.appId = data.appId    }, 300)  })}

頁面支持修改改造

template部分為了支持修改功能的實(shí)現(xiàn),需要如圖三處的變更或者添加

1. 根據(jù)跳轉(zhuǎn)動(dòng)作顯示對(duì)應(yīng)的標(biāo)題

2. 判斷是更改的操作,顯示ID信息,狀態(tài)不可更改

3. 增加修改按鈕,用v-if判斷動(dòng)作,也可直接使用一個(gè)button,對(duì)文字描述做判斷,例如

修改數(shù)據(jù)提交

提測編輯頁面最后一個(gè)改造就是對(duì)數(shù)據(jù)的提交部分,同ADD邏輯,僅改了下請(qǐng)求API。

 

 

 

聯(lián)調(diào)測試

代碼編寫完成還是要做個(gè)系統(tǒng)的測試來進(jìn)行功能的驗(yàn)證

CASE-1: 新建一個(gè)提測,驗(yàn)證添加功能是否受新的修改功能影響;

CASE-2: 修改剛剛創(chuàng)建的提測,檢查數(shù)據(jù)查詢回填,尤其是是服務(wù)應(yīng)用顯示是否正常,修改部分字段值,提交修改; 

 

 

 

 CASE-3: 檢查郵件是否都有正常收到,修改郵件是否按預(yù)期內(nèi)容進(jìn)行了標(biāo)注。 

 

 

 

 

文末留個(gè)優(yōu)化小作業(yè),對(duì)于郵件的發(fā)送內(nèi)容你能否用之前講解的HTML模版知識(shí)進(jìn)行格式上的優(yōu)化呢,讓內(nèi)容更好看一些。

 

【代碼更新】

  • 地址:https://github.com/mrzcode/TestProjectManagement

  • TAG:TPMShare15

 

堅(jiān)持原創(chuàng),堅(jiān)持實(shí)踐,堅(jiān)持干貨,如果你覺得有用,請(qǐng)點(diǎn)擊推薦,也歡迎關(guān)注我博客園和微信公眾號(hào)。

 

本文來自博客園,作者:MrZ大奇,轉(zhuǎn)載請(qǐng)注明原文鏈接:https://www.cnblogs.com/mrzcode/p/15596230.html

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/124811.html

相關(guān)文章

  • 開發(fā)后臺(tái)項(xiàng)目的套路是什么?

    摘要:跨部門溝通溝通確定后,溝通結(jié)果以郵件的形式確認(rèn)抄送相關(guān)。創(chuàng)建更改數(shù)據(jù)庫根據(jù)公司要求規(guī)范操作數(shù)據(jù)表,確定后郵件抄送相關(guān)開發(fā)。靜態(tài)頁面開發(fā)目前后臺(tái)項(xiàng)目大部分使用,自己拼頁面即可。更新將自己開發(fā)的功能模塊,部署到上。 需求評(píng)估 產(chǎn)品經(jīng)理、開發(fā)工程師、測試工程師,組織需求評(píng)審會(huì)議,講解本次的開發(fā)功能。 開發(fā)需分析: 是否涉及到其他開發(fā)部門? 是否需要?jiǎng)?chuàng)建數(shù)據(jù)庫/數(shù)據(jù)表? 本次需要做多少頁面?...

    whjin 評(píng)論0 收藏0
  • Electron 前端提測小工具

    摘要:場景目前公司的測試環(huán)境還是由開發(fā)來搭建和部署的。沒網(wǎng),我就做個(gè)離線版的工具唄。調(diào)研選型技術(shù)目前我了解到使用前端技術(shù)做桌面應(yīng)用有和以及著三種神器。好了,多說無用,來預(yù)覽一下我們的小工具吧默認(rèn),就是最新的要提測的包。更新于年月日已入手。 場景 目前公司的測試環(huán)境還是由開發(fā)來搭建和部署的。這種做法是極其不科學(xué)的。所以那種部署啊什么的重復(fù)性的操作還是做個(gè)工具讓測試自己去部署好了。先來預(yù)覽一下工...

    Riddler 評(píng)論0 收藏0
  • 馬蜂窩大交通業(yè)務(wù)質(zhì)量體系建設(shè)初步實(shí)踐

    摘要:大交通研發(fā)質(zhì)量體系建設(shè)為了幫助用戶更好地完成消費(fèi)決策閉環(huán),馬蜂窩上線了大交通業(yè)務(wù),為用戶提供購買機(jī)票火車票等服務(wù)。 質(zhì)量是決定產(chǎn)品能否成功、企業(yè)能否持續(xù)發(fā)展的關(guān)鍵因素之一。如何做好質(zhì)量體系建設(shè),這是個(gè)比較大的話題,包含的范圍很廣,也沒有固定的衡量標(biāo)準(zhǔn)。 打開一個(gè)互聯(lián)網(wǎng)公司招聘網(wǎng)站,搜索「測試工程師」崗位時(shí),你會(huì)發(fā)現(xiàn)幾乎全部 JD 都包含一條要求「建設(shè)或者參與建設(shè)所負(fù)責(zé)業(yè)務(wù)的質(zhì)量體系」。...

    Ilikewhite 評(píng)論0 收藏0
  • 馬蜂窩大交通業(yè)務(wù)質(zhì)量體系建設(shè)初步實(shí)踐

    摘要:大交通研發(fā)質(zhì)量體系建設(shè)為了幫助用戶更好地完成消費(fèi)決策閉環(huán),馬蜂窩上線了大交通業(yè)務(wù),為用戶提供購買機(jī)票火車票等服務(wù)。 質(zhì)量是決定產(chǎn)品能否成功、企業(yè)能否持續(xù)發(fā)展的關(guān)鍵因素之一。如何做好質(zhì)量體系建設(shè),這是個(gè)比較大的話題,包含的范圍很廣,也沒有固定的衡量標(biāo)準(zhǔn)。 打開一個(gè)互聯(lián)網(wǎng)公司招聘網(wǎng)站,搜索「測試工程師」崗位時(shí),你會(huì)發(fā)現(xiàn)幾乎全部 JD 都包含一條要求「建設(shè)或者參與建設(shè)所負(fù)責(zé)業(yè)務(wù)的質(zhì)量體系」。...

    fantix 評(píng)論0 收藏0
  • 有贊業(yè)務(wù)中臺(tái)測試團(tuán)隊(duì)介紹

    摘要:在冒煙測試執(zhí)行過程中,開發(fā)可以跟測試確定一個(gè)合理的冒煙用例數(shù)。另外在中臺(tái)測試組每月或每季度會(huì)成立專項(xiàng)測試小組專門執(zhí)行對(duì)應(yīng)的專項(xiàng)測試。 一、團(tuán)隊(duì)概況 ?有贊幫助每一位重視產(chǎn)品和服務(wù)的商家成功,目前旗下?lián)碛校河匈澪⑸坛恰⒂匈澚闶邸⒂匈澝罉I(yè)、有贊小程序等SaaS軟件產(chǎn)品,適用全行業(yè)多場景,幫商家網(wǎng)上開店、網(wǎng)上營銷、管理客戶、獲取訂單。 ?有贊業(yè)務(wù)中臺(tái)測試團(tuán)隊(duì)按照職責(zé)劃分為六條線:交易組、營銷...

    gaosboy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<