在跑自動化測試中,測試過程中會用到一些測試數據,其中這些測試數據包括臨時測試數據和常用到的數據,經常用到的數據,我們可以通過Excel或者yaml文件的方式進行存儲,那么臨時文件的呢?
今天安靜來介紹Pytest中的一個內置函數就可以方便的幫我們解決這個問題。
tmpdir是屬於Pytest中的一個內置函數,這個函數表示的意思是在測試開始運行前創建一個臨時文件目錄,並在測試結束后進行刪除。
這個臨時文件目錄可以用來存放我們的測試數據。
使用方法
在測試用例后面直接寫入tmpdir,需要用到創建臨時文件或者臨時文件夾的時候直接進行創建。
import pytest def test_01(tmpdir): # 創建一個測試目錄 a = tmpdir.mkdir('測試目錄') # 創建一個測試文件 aa = a.join('123.txt') # 在這個測試文件中進行寫入一行文字 aa.write('這是一個測試文件') print('測試目錄地址:%s'%a) # 讀取文件中寫入的內容 txt = aa.read() print(txt) assert txt == '這是一個測試文件' if __name__ == '__main__': pytest.main(['-vs'])
通過Pytest的方式進行讀取文件內容,我們可以發現已經把這個臨時文件創建完成了。為了確保安靜特意去了這個文件夾下面看了下,確實存在內容。
注意:這里安靜提一句,雖然說當時臨時文件沒有刪除,但是當我們再次調用這個臨時文件后,Pytest將自動進行臨時文件覆蓋。
實戰演練
上面安靜已經介紹了如何對tmpdir的內置函數的使用介紹,這里安靜通過請求兩個接口然后進行演示如何在項目中使用。
- 接口1:通過填寫一個隨機的手機號,通過手機號歸屬地接口進行查詢到城市地址。
- 接口2:通過上述接口1的城市地址,查詢出當地的天氣預報情況。
這里所產生的數據:手機號碼歸屬地查詢結果,以及當地的天氣預報情況,安靜全部通過tmpdir的方式進行寫入到臨時文件中。
import pytest import requests def phone(): '''查詢手機歸屬地''' url = 'http://apis.juhe.cn/mobile/get' data = { 'key':"7d2b9b14adfe392c88b9c431297be543", 'phone':"15641111111" } r = requests.post(url,data=data) return r.json() def tianqi(city): '''查詢天氣預報''' url = 'http://apis.juhe.cn/simpleWeather/query' data = { 'city':city, 'key':'331eab8f3481f37868378fcdc76cb7cd' } r = requests.post(url,data=data) return r.json() def test_01(tmpdir): '''測試用例1''' # 調用手機歸屬地接口 ph = phone() # 創建一個臨時文件 a = tmpdir.join('123.txt') # 在臨時文件中寫入接口返回內容 a.write(ph) # 獲取城市名 city = eval(a.read())['result']['city'] print('城市的地址是:%s'%city) # 執行查詢天氣接口 result = tianqi(city) # 將天氣接口信息寫入到文件內 a.write(result) print(result) if __name__ == '__main__': pytest.main(['-vs'])
通過執行接口可以看出兩個接口都成功執行了。
通過查看臨時文件目錄,並且成功的創建了臨時文件內容。
總結
安靜通過一個小小的例子簡單的介紹了Pytest的內置函數tmpdir,當然這里創建臨時文件的方法不止這一個,安靜只是通過這個例子來讓大家簡單的認識tmpdir。
具體詳細的操作可以參考官方文件進行查閱。希望這個庫對你能有所幫助。感謝你的閱讀。