Pytest內置函數,讓你不再為自動化測試數據存放發愁。


在跑自動化測試中,測試過程中會用到一些測試數據,其中這些測試數據包括臨時測試數據和常用到的數據,經常用到的數據,我們可以通過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。

具體詳細的操作可以參考官方文件進行查閱。希望這個庫對你能有所幫助。感謝你的閱讀。

🌈其他專欄文章

《爬蟲+正則+selenium技術綜合運用》

《5分鍾測試你是否適合這份月薪25k的工作》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM