摘要:如果手動的維護(hù)編寫格式的數(shù)據(jù)是很麻煩的,所以推薦生成數(shù)據(jù)來方便我們進(jìn)行接口的測試。用真實數(shù)據(jù)測試將使你的應(yīng)用程序更加健壯,因為你會有可能發(fā)現(xiàn)生產(chǎn)前一天發(fā)布的錯誤。
如果你正在測試一個線上產(chǎn)品,你會想確保你的密切模擬生產(chǎn)環(huán)境條件下的測試。在生產(chǎn)中,你將有用戶的軍隊在你的應(yīng)用程序乒乒乓乓,并用數(shù)據(jù)填充數(shù)據(jù)庫,這是你的代碼壓力。更糟的是,你輸入的數(shù)據(jù)將偏向你自己的使用模式,將不符合實際使用,可能會留下嚴(yán)重的錯誤未被發(fā)現(xiàn)。某些應(yīng)用程序框架,如作為Ruby on Rails的,有很大的數(shù)據(jù)庫。但并不是每個人都是程序員,有時間去學(xué)習(xí)一個新的框架,或者是隨意采用一個新的平臺。
當(dāng)我們進(jìn)行測試的時候,可能會有需要進(jìn)行批量的驗證賬號和密碼的可用性。如果手動的維護(hù)編寫json格式的數(shù)據(jù)是很麻煩的,所以推薦生成json數(shù)據(jù)來方便我們進(jìn)行api接口的測試。
參數(shù)名 | 參數(shù)類型 | 必須 |
---|---|---|
userId | String | 是 |
password | String | 是 |
首先我們先使用Java模擬一個數(shù)據(jù)并生成一個接口需要的json數(shù)據(jù)(開始啦~~)
/** * User基礎(chǔ)類 */ public class User{ private String userId; private String password; public User(){ } public User(String userId, String password){ this.userId = userId; this.password = password; } /**省略get和set方法**/ } /** * 模擬數(shù)據(jù)測試類 */ public class TestUser{ @Test public void test(){ User user1 = new User("TestUser01", "eyJtZW1iZXJMaXN0I"); /* * 這里我們已經(jīng)模擬好了1個用戶數(shù)據(jù)了。 * 如果我們需要將他們變?yōu)閖son格式的數(shù)據(jù)則需要借用工具來實現(xiàn) * 例如常見的jackson,fastjson,和gson * 這里使用fastjson作為示范,請看官們自備fastjson的jar包 * http://repo1.maven.org/maven2/com/alibaba/fastjson/ */ String jsonStr = JSON.toJSONString(user1); System.out.println(jsonStr); } }
控制臺會輸出:
{"userId":"TestUser01","password":"eyJtZW1iZXJMaXN0I"}
看,這樣我們就擁有了簡單的單個數(shù)據(jù)的json格式啦
這些用戶名和密碼都是事先指定好的,可以寫在程序里面,也可以批量的寫在txt文檔中,如果有多個用戶,可以一行寫一個用戶名和密碼。一般用戶名和密碼之間用一個空格分隔就行了,因為用戶名和密碼一般情況下都是不允許使用空格的,分割符可以根據(jù)情況更換,但是需要注意,分割符不允許能在兩個字段出現(xiàn)的。
現(xiàn)在我們來實現(xiàn)從文本中批量的讀取數(shù)據(jù),并生成我們需要的json格式:
有一個text文本:
user.txt
TestUser01 eyJtZW1iZXJMaXN0I TestUser02 Q4US8wIiwibGFpeXV TestUser03 ajVnRXVxWlZyQUNWS TestUser04 oi6Zi/6IO257OV5Lu TestUser05 In0seyJhZGRyZXNzI TestUser06 wiaWNvblVybCI6IiI
文本里面記錄了多個用戶信息,這里是6個哦
public static ListreadUserText() { File file = new File("text.txt"); List data = new LinkedList<>(); try (BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(file), "utf-8"))) { String readLine = null; while (null != (readLine = br.readLine())) { String[] userData = readLine.split(" "); data.add(new User(userData[0], userData[1])); } } catch (IOException e) { e.printStackTrace(); } return data; }
然后我們一行一行的讀取,把每行拆分,并封裝成用戶數(shù)據(jù),最后放到List數(shù)組中。
最后我們把模擬的數(shù)組數(shù)據(jù)轉(zhuǎn)換成數(shù)組型的json數(shù)據(jù)
@Test public void test2(){ Listdata = readUserText(); String jsonStr = JSON.toJSONString(data); System.out.println(jsonStr); }
控制臺會輸出
[{"password":"eyJtZW1iZXJMaXN0I","userId":"TestUser01"},{"password":"Q4US8wIiwibGFpeXV","userId":"TestUser02"},{"password":"ajVnRXVxWlZyQUNWS","userId":"TestUser03"},{"password":"oi6Zi/6IO257OV5Lu","userId":"TestUser04"},{"password":"In0seyJhZGRyZXNzI","userId":"TestUser05"},{"password":"wiaWNvblVybCI6IiI","userId":"TestUser06"}]
現(xiàn)在我們看到的json數(shù)據(jù)是屬于壓縮的格式,所以可讀性并不高,我們需要格式化一下這些json數(shù)據(jù),也就是俗稱的美化~ ~
[ { "password":"eyJtZW1iZXJMaXN0I", "userId":"TestUser01" }, { "password":"Q4US8wIiwibGFpeXV", "userId":"TestUser02" }, { "password":"ajVnRXVxWlZyQUNWS", "userId":"TestUser03" }, { "password":"oi6Zi/6IO257OV5Lu", "userId":"TestUser04" }, { "password":"In0seyJhZGRyZXNzI", "userId":"TestUser05" }, { "password":"wiaWNvblVybCI6IiI", "userId":"TestUser06" } ]
看,是不是清晰多了~ ~ ~
當(dāng)你的測試數(shù)據(jù)庫中充滿了逼真的數(shù)據(jù),你會更多地參與作為一個測試儀。當(dāng)你表現(xiàn)出新的特征的人,他們會明白他們更快。真實的數(shù)據(jù)是多種多樣的,包含字符,不玩弄你的代碼,如省略號,或從其他語言中的Unicode字符。用真實數(shù)據(jù)測試將使你的應(yīng)用程序更加健壯,因為你會有可能發(fā)現(xiàn)生產(chǎn)前一天發(fā)布的錯誤。
作者信息
原文作者M(jìn)axleap團隊_云服務(wù)研發(fā)成員:Sunny Zhang【原創(chuàng)】
力譜宿云 LeapCloud 團隊首發(fā):https://blog.maxleap.cn/archi...
歡迎關(guān)注微信訂閱號:MaxLeap_yidongyanfa
相關(guān)閱讀
Amazon和Mysql之間的那點事兒
當(dāng)我們說數(shù)據(jù)挖掘的時候我們在說什么
作者往期佳作
單元測試和集成測試業(yè)務(wù)應(yīng)用程序
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66127.html
摘要:帶有一個新的調(diào)試器捕獲這改變了堆棧跟蹤相關(guān)各部分用異步代碼執(zhí)行接收器與相應(yīng)地區(qū)的堆棧跟蹤捕獲的異步代碼傳遞發(fā)送方。 反應(yīng)性編程趨勢后,我們的代碼越來越異步。 showImg(https://cscdn.maxleap.cn/2.0/download/NTZmMGQ0NzdhNWZmN2YwMDAxZWJlMjg1/zcf-1eb1a6d0-09be-4382-ad89-8c640cc4...
摘要:希望大家能在這個成長過程中收益良多。以后的生活就輕松很多。正所謂萬事開頭難,只要邁出了第一步,你就已經(jīng)成功了一半,古人說的好不積跬步,無以至千里。等到完成之后再回顧這一段路程的時候,你肯定會感慨良多。 ...
摘要:數(shù)據(jù)庫無法根據(jù)業(yè)務(wù)分?jǐn)倝毫Γ瑔问Ч?jié)點多,事故也頻繁出現(xiàn)。這是智慧摩羯這時簡單的架構(gòu)圖,是單一的節(jié)點庫,增加了很多運維腳本,當(dāng)時在上就有幾十臺。開發(fā)人員變多,出現(xiàn)的事故概率增大,系統(tǒng)升級的風(fēng)險變高。 2010 年南非世界杯,「預(yù)言帝」章魚保羅搶走了原本屬于球星的風(fēng)頭,它精準(zhǔn)的預(yù)測了德國國家隊的比賽結(jié)果;現(xiàn)實中,我們每個人也會對比賽結(jié)果進(jìn)行娛樂性的預(yù)測,關(guān)注自己喜歡的球隊,而有這么一家專...
摘要:在飛蛾腦中,章魚胺可以幫助加強產(chǎn)生成功的神經(jīng)線路。廣泛來說,此項研究成果可能給人工神經(jīng)網(wǎng)絡(luò)領(lǐng)域帶來極大的影響。 作為現(xiàn)代機器學(xué)習(xí)基石的深度神經(jīng)網(wǎng)絡(luò),雖然模仿的是生物神經(jīng)網(wǎng)絡(luò),但其實這兩者之間有著極大的區(qū)別。拋開僅有的一些相似處,有些重要的機器學(xué)習(xí)機制沒有任何自然界的版本,而這兩者學(xué)習(xí)過程之間也有著大量的不同。這些區(qū)別很有可能解釋了為什么機器學(xué)習(xí)系統(tǒng)在某些領(lǐng)域中的表現(xiàn)遠(yuǎn)遜于自然系統(tǒng)。就拿昆蟲來...
閱讀 1074·2021-11-16 11:45
閱讀 2708·2021-09-27 13:59
閱讀 1315·2021-08-31 09:38
閱讀 3143·2019-08-30 15:52
閱讀 1315·2019-08-29 13:46
閱讀 2085·2019-08-29 11:23
閱讀 1631·2019-08-26 13:47
閱讀 2476·2019-08-26 11:54