接口自動化測試之數據依賴


接口測試中,有些場景接口間存在着數據依賴的問題,比如說提交訂單前需要用戶先登錄等等,下面就用兩個小案例說說數據依賴的問題。

兩個接口,一個接口(project_add)用來創建測試項目,一個接口(env_add)用來創建測試環境,env_add接口需依賴project_add接口返回的project_id字段數據。

一、Postman解決數據依賴的問題

 

 第一步,project_add接口,Tests中寫js代碼,將需依賴的字段添加到環境變量中

 第二步:在env_add接口的Pre-request Script 中寫js代碼,把第一個接口拿到的參數賦值

 第三步:再將project_id配置到Body中prj_id字段中

 這樣數據依賴的問題就搞定了

 

二、用python代碼實現接口數據依賴

用代碼解決數據依賴的方法有多種,下面用反射來解決數據依賴的問題。

反射它可以把字符串映射到實例的變量或者實例的方法然后,可以去執行調用、修改等操作。

它有四個重要的方法:

  • getattr 獲取指定字符串名稱的對象屬性
  • setattr 為對象設置一個對象
  • hasattr 判斷對象是否有對應的對象(字符串)
  • delattr 刪除指定屬性
class RelyData(object):
    project_id = None


print(RelyData.project_id)
setattr(RelyData, "project_id", "111")
print(getattr(RelyData, "project_id"))

定義了一個RelyData()類,里面設置了一個類屬性,project_id=None,然后再用setattr函數為對象RelyData里面project_id屬性設置了新值,最后再用getattr函數取出里面的值,這是個屬性值替換的過程。

 

class Test(unittest.TestCase):
    def setUp(self):
        pass

    def test_1(self):
        """添加項目接口"""
        url = "http://127.0.0.1:8000/base/project_add/"
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        datas = {"prj_name": "baidu search", "description": "百度搜索"}
        response = requests.post(url, data=datas, headers=headers)
        print("response: ", response.json())
        result = response.json()
        # 給RelyData里面的project_id=None的類屬性設置新的屬性
        setattr(RelyData, "project_id", result.get("project_id"))

    def test_2(self):
        """添加環境接口,需依賴添加項目接口返回的project_id字段數據"""
        url = "http://127.0.0.1:8000/base/env_add/"
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        datas = {
            "env_name": "百度測試環境",
            "url": "www.baidu.com",
            # getattr(RelyData,'project_id'),取出里面的屬性值
            "prj_id": getattr(RelyData, "project_id"),
            "description": "SIT測試環境"
        }
        response = requests.post(url, data=datas, headers=headers)
        print("response: ", response.json())


if __name__ == '__main__':
    unittest.main()

 

新開了個QQ群,有問題歡迎進群溝通:976036741


免責聲明!

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



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