让程序或工具代替人工自动化的完成对接口进行测试的一种过程。
1、GET方法(响应状态码:200)
#1.导包
import requests
#2.调用get
url="http://127.0.0.1:8080/demo/cheliangxinxi/list/"
r=requests.get(url)
#3.获取请求url地址
print("url为:",r.url)
#4.获取响应状态码
print("状态码为:",r.status_code)
#5.获取响应信息,文本形式
print("响应信息为:",r.text)
print(r.headers)
l=r.encoding='ASCI'
print(r.encoding)
2、GET方法请求带参数
#1.导包
import requests
#2.调用get
url="http://www.baidu.com"
#参数:params:字典或字符串(推荐使用字典)
#字典
params={"id":1001,"kw":"北京"} # %2c ASCI值为逗号
#字符串
#r=requests.get(url,params="id=1001")
r=requests.get(url,params=params)
#不推荐写法
#url="http://www.baidu.com?id=1001"
#3.获取请求url地址
print("url为:",r.url)
#4.获取响应状态码
print("状态码为:",r.status_code)
#5.获取响应信息,文本形式
print("响应信息为:",r.text)
3、PUT方法(响应状态码:200或201)
import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/edit/180/"
headers={"Content-Type":"application/json"}
data={
"data": [{
"id": "180",
"chehao":"T01",
"pinzhong": "Test学院update"
}]
}
r=requests.put(url,json=data,headers=headers)
print(r.json())
print(r.status_code)
4、POST方法(响应状态码:201)
import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/add/"
headers={"Content-Type":"application/json"}
data={
"data": [{
"chehao":"T01",
"pinzhong": "Test学院"
}]
}
r=requests.post(url,json=data,headers=headers)
print(r.json())
print(r.status_code)
print(r.text)
5、传递参数json与data格式的区别?
data:字典对象
json:json字符串
6、如何将字典对象转换为json字符串?
1.导入json包
2.json.dumps(字典对象)
7、响应数据json()与text区别?
json():双引号,返回类型字典,可以通过键名来获取响应的值
text:单引号,返回的类型为字符串,无法通过键名俩获取响应的值
8、DELETE方法(响应状态码:204)
import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/remove/190/"
r=requests.delete(url)
print(r.status_code)
1.encoding
查看默认请求编码格式:响应对象.encoding
设置响应编码格式 响应对象.encoding=”utf-8”
2.headers 获取服务器响应信息头
响应对象.headers
3.cookies获取响应cokkies信息(服务器产生)
4.text:以文本形式解析
5.content:以字节码形式解析响应内容
6.json() 以json字符串格式解析响应内容
TPShop商城的获取验证码,登陆成功,获取订单信息
import requests
import json
#获取验证码
url="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r=requests.get(url)
#获取cookie
r_cookie=r.cookies
print(r_cookie)
print("单独获取cookie值:",r_cookie['PHPSESSID'])
#设置cookie变量
cookies={"PHPSESSID":r_cookie['PHPSESSID']}
url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
data={
"username": "15991986680",
"password": "Wxm131411",
"region": "8888"
}
r_login=requests.post(url=url_login,json=data,cookies=cookies)
print(r_login.json())
#获取订单信息
url_order="http://demo6.tp-shop.cn/index.php/Home/Order/order_list.html"
r=requests.get(url=url_order,cookies=cookies)
print(r.text)
Session:完成一次会话(从客户端和服务器创建请求连接开始,到客户端和服务器断开连接结束)
session可以自动保存服务器产生的cookies信息,并且自动在下一条请求时附加。
应用:通过session对象.方法
session.get()
session.post()
session.put()
session.delete()
无论是requests还是session返回结果都是responsebody
import requests
import json
#获取验证码
url="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r=requests.get(url)
#获取cookie
r_cookie=r.cookies
print(r_cookie)
print("单独获取cookie值:",r_cookie['PHPSESSID'])
#设置cookie变量
cookies={"PHPSESSID":r_cookie['PHPSESSID']}
url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
data={
"username": "15991986680",
"password": "Wxm131411",
"region": "8888"
}
session=requests.session()
r_login=session.post(url=url_login,json=data)
print(r_login.json())
#获取订单信息
url_order="http://demo6.tp-shop.cn/index.php/Home/Order/order_list.html"
r=session.get(url=url_order)
print(r.text)
继承unittest.TestCase,以test开头的方法就是一条用例
setup:
作用:test开始方法执行之前,首先会被执行
teardown:
作用:test开始方法执行之后,会被执行
test_login_success:
作用:登陆成功
test_username_not_exist
作用:登陆失败,用户名不存在
test_password_error
作用:登陆失败,密码错误
import unittest
import requests
class TPShopLogin(unittest.TestCase):
def setUp(self):
#获取session对象
self.session=requests.session()
#登陆url
self.url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
#验证码url
self.url_verify="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
def tearDown(self):
self.session.close()
#关闭session
def test_login_sucess(self):
#请求验证码
self.session.get(self.url_verify)
data = {
"username": "15991986680",
"password": "Wxm131411",
"region": "8888"
}
#请求登陆
r=self.session.post(self.url_login,json=data)
#断言
try:
self.assertEqual("登陆成功",r.json()['msg'])
except AssertionError as e:
print(e)
def test_username_not_exist(self):
# 请求验证码
self.session.get(self.url_verify)
data = {
"username": "159919866801",
"password": "Wxm131411",
"region": "8888"
}
# 请求登陆
r = self.session.post(self.url_login, json=data)
# 断言
try:
self.assertEqual("用户名不存在", r.json()['msg'])
except AssertionError as e:
print(e)
def test_password_error(self):
# 请求验证码
self.session.get(self.url_verify)
data = {
"username": "15991986680",
"password": "Wxm13141111",
"region": "8888"
}
# 请求登陆
r = self.session.post(self.url_login, json=data)
# 断言
try:
self.assertEqual("密码错误", r.json()['msg'])
except AssertionError as e:
print(e)
def test_verify_error(self):
# 请求验证码
self.session.get(self.url_verify)
data = {
"username": "15991986680",
"password": "Wxm13141111",
"region": "8888"
}
# 请求登陆
r = self.session.post(self.url_login, json=data)
# 断言
try:
self.assertEqual("验证码错误", r.json()['msg'])
except AssertionError as e:
print(e)
if __name__=='__main__':
unittest.main()