python 接口自動化 request get請求 json內容轉換為python字典


一、如果運行時,提示ModuleNotFoundError: No module named 'requests'

解決方法:

1、一定要切到Python3的主目錄下安裝requests。

2、如果提示已經安裝,那原因是安裝的路徑不正確,需要先卸載。找到現在的安裝目錄(會提示),在CMD窗口切過去,執行:
 pip3 uninstall requests
3、然后再重新安裝 pip3 install requests
4、再切到文件目錄 ,執行import request,則OK.
 

二、序列化和反序列化可以認為是將json和python的dict互轉

* 序列化: python dict -> json
* 反序列化: json -> python dict

## json與dict互轉實例


import json
# 序列化
d = {'k': 'v'}
j = json.dumps(d)

# 反序列化
print json.loads(j)

三、實例

import unittest
import json
import requests

class JenkinGetCase(unittest.TestCase):

def setUp(self):
self.r = requests.get('http://localhost:8080/jenkins/api/json?tree=jobs[name]')

def tearDown(self):
print ('the end')

def test_get_all_job_names(self):
result = self.r.text
#獲得回報,就是請求返回的json內容
json_result = json.loads(result)
print (json_result)

self.assertEqual(json_result['jobs'][0]['name'],'appium_test')
self.assertEqual(json_result['jobs'][-1]['name'],'end_test')

def test_get_all_job_names_samples(self):
json_result = self.r.json() #簡單版的,直接將取到的json反序列化為python的字典,無需要再轉換
self.assertEqual(json_result['jobs'][0]['name'],'appium_test')
self.assertEqual(json_result['jobs'][-1]['name'],'end_test')


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

 

 

 四、如果開啟了鑒權,那么如何獲取get接口
在開頭里增加語句:from requests.auth import HTTPBasicAuth
另外,修改此句:即增加了auth的用戶名與密碼

self.r = requests.get('http://localhost:8080/jenkins/api/json?tree=jobs[name]',auth=('admin','admin')

 


免責聲明!

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



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