天天看點

測試平台系列(40) 尋個開源項目測試

大家好,我是米洛,一個測試開發部落客,world很大, 你應該去看看!

歡迎大家關注我的公衆号: <code>測試開發坑貨</code>。

上周插播了一個github登入的内容,沒啥反響。那我們這周就繼續完善用例相關的内容。

其實雖然我在做這樣一個測試平台,但其實就像飯哥說的,存在一些問題:

自己的平台沒有落地

半成品

自己都沒有親身使用

确實,雖然上家公司支撐到了百分之90多的業務線,但是裡面結合了很多公司的内容,比如<code>grpc</code>,<code>微服務自動尋址</code>,<code>yapi</code>,<code>内部釋出系統,資料工廠</code>等相關的内容。

這個項目雖然和當時的内容如出一轍(換了一種語言實作),但确又不太一樣。

為了更好地支援平台的發展,加上時間關系,是以我打算挑選一個麻雀雖小,但又<code>五髒俱全</code>的項目來進行測試。

為了後續覆寫率相關的功能,我得找一個開源的Java項目,于是我發現了它,一個部落格系統基于springboot+vue+element-ui:

測試平台系列(40) 尋個開源項目測試

一般這樣開源的項目都差不多是個半成品,但隻要他有完善的登入(token/cookie機制),加上有一部分crud功能就行。

這個位址我已經部署到我自己的伺服器了,以後就可以直接來測試這個服務了,但第一步我們先要拎出裡面的接口資料。

服務位址: http://47.112.32.195:8081/index.html

大概翻閱了一下它的認證子產品,采用的是<code>spring-security</code>,這是我<code>沒接觸</code>過的全新領域。

不過咱們不用慌,先看看他的登入是咋耍的。

測試平台系列(40) 尋個開源項目測試

請求資料

測試平台系列(40) 尋個開源項目測試

傳回資料

可以看到,它是一個form表單的POST請求,傳回的内容<code>還沒有token這樣的資訊</code>。這可如何是好?别怕,我們做這樣的工具,不怕特例多,就怕特例少,導緻<code>相容性不好</code>!

咱們好像之前隻支援了JSON,我們調試一下登入接口,确認一下:

測試平台系列(40) 尋個開源項目測試

header部分

測試平台系列(40) 尋個開源項目測試

可以看到登入失敗了

測試平台系列(40) 尋個開源項目測試

通過debug發現username是空字元串

項目位址: https://github.com/lenve/VBlog.git

我們把項目拉到本地https://github.com/lenve/VBlog.git debug發現,username是空字元串。

大機率是我們的<code>requests</code>請求的姿勢不對,那怎麼辦呢?

先看看我們現在的requests請求方法怎麼封裝的。

測試平台系列(40) 尋個開源項目測試

可以看到是這樣封裝的,<code>然而</code>我們的body是個字元串,但是如果我們要請求form表單的時候,body需要是dict。

改造如下:

測試平台系列(40) 尋個開源項目測試

如果Content-Type裡面帶有form了,那我們把body要變成dict(通過json.loads)。

改造後實驗一下:

測試平台系列(40) 尋個開源項目測試

如此,我們便支援了json還有form的http請求,至于file類型,我們遇到再繼續研究。

别急,我們切換到<code>Cookie</code>tab,可以看到Cookie裡面已帶上了JSESSIONID,我們可通過這個,繼續我們後面需要登入的請求。與token相差不大。

測試平台系列(40) 尋個開源項目測試

記一下<code>優化點</code>,當請求類型切換到form/json的時候自動改變Content-Type,這樣體驗會更好一些!

下一篇,我們開始編寫<code>資料初始化</code>相關的工作。比如我要查詢一篇文章,需要先登入,那麼需要初始化的資料就是上面提到的<code>JSESSIONID</code>。

線上示範位址: http://47.112.32.195/

前端代碼倉庫: https://github.com/wuranxu/pityWeb

後端代碼倉庫: https://github.com/wuranxu/pity