samtester

使用Python进行接口测试

python 做接口测试

用到模块 requests

安装模块 python -m pip install requests

发送一个请求

import requests

url = \'http://url\'

# POST请求
register_url = url + \'/register\'
data = {\'username\':\'aaaa123\',\'password\':\'123123\',\'password_confirmation\':\'123123\'}
r = requests.post(register_url,data)
result = r.json()#如果返回的是json格式,就用这个
result = r.text#如果返回的是文本格式,则用这个
print(result)
带有头部信息的请求

login_url = url + \'/login\'
data = {\'username\':\'aaaa123\',\'password\':\'123123\'}
r = requests.post(login_url,data)
result = r.json()
get_token = \'Bearer \' + str(result[\'token\'])


# 带有头部信息
create_url = url + \'/api/tasks\'
data = {\'title\':\'abcdefg\',\'desc\':\'sgasdgasdg\'}
my_head = {\'Authorization\':get_token}
r = requests.post(create_url,data,headers=my_head)
print(r.json())
# HTTP请求类型
# get类型
r = requests.get(\'https://github.com/timeline.json\')
# post类型
r = requests.post("http://m.ctrip.com/post")
# put类型
r = requests.put("http://m.ctrip.com/put")
# delete类型
r = requests.delete("http://m.ctrip.com/delete")
# head类型
r = requests.head("http://m.ctrip.com/head")
# options类型
r = requests.options("http://m.ctrip.com/get")

# 获取响应内容
print(r.content) #以字节的方式去显示,中文显示为字符
print(r.text) #以文本的方式去显示

#URL传递参数
payload = {\'keyword\': \'香港\', \'salecityid\': \'2\'}
r = requests.get("http://m.ctrip.com/webapp/tourvisa/visa_list", params=payload) 
print(r.url) #示例为http://m.ctrip.com/webapp/tourvisa/visa_list?salecityid=2&keyword=香港

#获取/修改网页编码
r = requests.get(\'https://github.com/timeline.json\')
print (r.encoding)


#json处理
r = requests.get(\'https://github.com/timeline.json\')
print(r.json()) # 需要先import json    

# 定制请求头
url = \'http://m.ctrip.com\'
headers = {\'User-Agent\' : \'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19\'}
r = requests.post(url, headers=headers)
print (r.request.headers)

#复杂post请求
url = \'http://m.ctrip.com\'
payload = {\'some\': \'data\'}
r = requests.post(url, data=json.dumps(payload)) #如果传递的payload是string而不是dict,需要先调用dumps方法格式化一下

# post多部分编码文件
url = \'http://m.ctrip.com\'
files = {\'file\': open(\'report.xls\', \'rb\')}
r = requests.post(url, files=files)

# 响应状态码
r = requests.get(\'http://m.ctrip.com\')
print(r.status_code)
    
# 响应头
r = requests.get(\'http://m.ctrip.com\')
print (r.headers)
print (r.headers[\'Content-Type\'])
print (r.headers.get(\'content-type\')) #访问响应头部分内容的两种方式
    
# Cookies
url = \'http://example.com/some/cookie/setting/url\'
r = requests.get(url)
r.cookies[\'example_cookie_name\']    #读取cookies
    
url = \'http://m.ctrip.com/cookies\'
cookies = dict(cookies_are=\'working\')
r = requests.get(url, cookies=cookies) #发送cookies

#设置超时时间
r = requests.get(\'http://m.ctrip.com\', timeout=0.001)

#设置访问代理
proxies = {
           "http": "http://10.10.1.10:3128",
           "https": "http://10.10.1.100:4444",
          }
r = requests.get(\'http://m.ctrip.com\', proxies=proxies)


#如果代理需要用户名和密码,则需要这样:
proxies = {
    "http": "http://user:pass@10.10.1.10:3128/",
}

响应内容

r.encoding                       #获取当前的编码
r.encoding = \'utf-8\'             #设置编码
r.text                           #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content                        #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。

r.headers                        #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None

r.status_code                     #响应状态码
r.raw                             #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()   
r.ok                              # 查看r.ok的布尔值便可以知道是否登陆成功
 #*特殊方法*#
r.json()                         #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise_for_status()             #失败请求(非200响应)抛出异常
  • 自动带上cookie
s = requests.Session()
s.auth = (\'auth\',\'passwd\')
s.headers = {\'key\':\'value\'}
r = s.get(\'url\')
r1 = s.get(\'url1\')

分类:

技术点:

相关文章:

  • 2021-11-24
  • 2021-12-10
  • 2022-01-06
  • 2022-12-23
  • 2021-07-29
  • 2022-01-03
  • 2021-11-20
猜你喜欢
  • 2022-01-02
  • 2021-08-13
  • 2021-10-06
  • 2021-12-07
  • 2021-11-29
  • 2021-11-20
相关资源
相似解决方案