業(yè)務(wù)場(chǎng)景:需要通過(guò)接口府喳,注冊(cè)用戶(hù)蒲肋,但由于注冊(cè)請(qǐng)求的驗(yàn)證碼是和手機(jī)號(hào)關(guān)聯(lián),并生成在mysql數(shù)據(jù)庫(kù)的,需要通過(guò)查詢(xún)數(shù)據(jù)庫(kù)獲取到驗(yàn)證碼兜粘,并傳遞給注冊(cè)頁(yè)面申窘,最后提交注冊(cè)申請(qǐng)。
對(duì)于連接mysql的設(shè)置配置孔轴,可以參加已有文章http://www.reibang.com/p/3ca2c01c564c
一剃法、配置數(shù)據(jù)庫(kù)連接,添加JDBC Request請(qǐng)求
以下兩個(gè)地方的命名需要一致
1)配置JDBC Connection Configuration
2)路鹰、配置JDBC Request
3)執(zhí)行請(qǐng)求
請(qǐng)求查詢(xún)結(jié)果返回是亂碼
解決方式贷洲,在JDBCConnectionConfiguration配置中,url添加【?characterEncoding=utf8】
二晋柱、隨機(jī)生成手機(jī)號(hào)碼优构,并傳遞給相關(guān)頁(yè)面
采用時(shí)間戳+隨機(jī)數(shù)的方法來(lái)避免重復(fù),并且生成不重復(fù)的8位數(shù)
1雁竞、添加采樣器 BeanShell Sampler,并在中填寫(xiě)對(duì)應(yīng)的操作
//為了避免手機(jī)號(hào)后8位出現(xiàn)重復(fù)钦椭,因此采用時(shí)間戳+隨機(jī)數(shù)
phone=${__time(/100000,)} + ${__Random(1,100000,)};
String a = String.valueOf(phone);? //將phone轉(zhuǎn)為字符串,因?yàn)槭謾C(jī)號(hào)的要求類(lèi)型為char
vars.put("phone",a);? ? ? //將字符串a(chǎn)設(shè)置為變量
vars.get("phone");? ? ? //在debug sample中查看phone的取值
log.info("生成的手機(jī)號(hào)碼是:"+a);? ? //在logview中打印查看取值
這里碑诉,前半是取一個(gè)10位的時(shí)間戳玉凯,后面是取1個(gè)[1,100000]的隨機(jī)數(shù)字,可重復(fù)联贩,這個(gè)隨機(jī)范圍越大,最后生成的隨機(jī)數(shù)越不容易重復(fù)捎拯,當(dāng)大并發(fā)時(shí)泪幌,隨機(jī)數(shù)取的很快,所以還是有極低可能重復(fù)的署照。因此在許可范圍內(nèi)祸泪,盡量拉大隨機(jī)數(shù)范圍。?
${__time(,)}則是去當(dāng)前毫秒時(shí)間建芙,13位的數(shù)字没隘,也可以用來(lái)取更精確的時(shí)間戳?
2、將設(shè)置的變量添加到請(qǐng)求中
數(shù)據(jù)庫(kù)查詢(xún)也傳遞相應(yīng)的號(hào)碼
3禁荸、結(jié)果樹(shù)查看生成手機(jī)號(hào)碼
三右蒲、獲取數(shù)據(jù)庫(kù)查詢(xún)返回的驗(yàn)證碼,并傳遞給注冊(cè)頁(yè)面
數(shù)據(jù)庫(kù)查詢(xún)驗(yàn)證碼返還如下
提取驗(yàn)證碼
傳遞code給注冊(cè)頁(yè)面
查看執(zhí)行結(jié)果