若是你正在測試一個線上產品,你會想確保你的密切模擬生產環境條件下的測試。在生產中,你將有用戶的軍隊在你的應用程序乒乒乓乓,並用數據填充數據庫,這是你的代碼壓力。更糟的是,你輸入的數據將偏向你本身的使用模式,將不符合實際使用,可能會留下嚴重的錯誤未被發現。某些應用程序框架,如做爲Ruby on Rails的,有很大的數據庫。但並非每一個人都是程序員,有時間去學習一個新的框架,或者是隨意採用一個新的平臺。java
當咱們進行測試的時候,可能會有須要進行批量的驗證帳號和密碼的可用性。若是手動的維護編寫json格式的數據是很麻煩的,因此推薦生成json數據來方便咱們進行api接口的測試。程序員
參數名 | 參數類型 | 必須 |
---|---|---|
userId | String | 是 |
password | String | 是 |
首先咱們先使用Java模擬一個數據並生成一個接口須要的json數據(開始啦~~)sql
/** * User基礎類 */ 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方法**/ } /** * 模擬數據測試類 */ public class TestUser{ @Test public void test(){ User user1 = new User("TestUser01", "eyJtZW1iZXJMaXN0I"); /* * 這裏咱們已經模擬好了1個用戶數據了。 * 若是咱們須要將他們變爲json格式的數據則須要借用工具來實現 * 例如常見的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"}數據庫
看,這樣咱們就擁有了簡單的單個數據的json格式啦json
這些用戶名和密碼都是事先指定好的,能夠寫在程序裏面,也能夠批量的寫在txt文檔中,若是有多個用戶,能夠一行寫一個用戶名和密碼。通常用戶名和密碼之間用一個空格分隔就好了,由於用戶名和密碼通常狀況下都是不容許使用空格的,分割符能夠根據狀況更換,可是須要注意,分割符不容許能在兩個字段出現的。api
如今咱們來實現從文本中批量的讀取數據,並生成咱們須要的json格式:
有一個text文本:
user.txt數組
TestUser01 eyJtZW1iZXJMaXN0I TestUser02 Q4US8wIiwibGFpeXV TestUser03 ajVnRXVxWlZyQUNWS TestUser04 oi6Zi/6IO257OV5Lu TestUser05 In0seyJhZGRyZXNzI TestUser06 wiaWNvblVybCI6IiI
文本里面記錄了多個用戶信息,這裏是6個哦微信
public static List<User> readUserText() { File file = new File("text.txt"); List<User> 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; }
而後咱們一行一行的讀取,把每行拆分,並封裝成用戶數據,最後放到List數組中。
最後咱們把模擬的數組數據轉換成數組型的json數據框架
@Test public void test2(){ List<User> data = readUserText(); String jsonStr = JSON.toJSONString(data); System.out.println(jsonStr); }
控制檯會輸出maven
[{"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"}]
如今咱們看到的json數據是屬於壓縮的格式,因此可讀性並不高,咱們須要格式化一下這些json數據,也就是俗稱的美化~ ~
[ { "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" } ]
看,是否是清晰多了~ ~ ~
當你的測試數據庫中充滿了逼真的數據,你會更多地參與做爲一個測試儀。當你表現出新的特徵的人,他們會明白他們更快。真實的數據是多種多樣的,包含字符,不玩弄你的代碼,如省略號,或從其餘語言中的Unicode字符。用真實數據測試將使你的應用程序更加健壯,由於你會有可能發現生產前一天發佈的錯誤。
做者信息
原文做者Maxleap團隊_雲服務研發成員:Sunny Zhang【原創】
力譜宿雲 LeapCloud 團隊首發:https://blog.maxleap.cn/archi...
歡迎關注微信訂閱號:MaxLeap_yidongyanfa
相關閱讀
Amazon和Mysql之間的那點事兒
當咱們說數據挖掘的時候咱們在說什麼
做者往期佳做
單元測試和集成測試業務應用程序