测试技能提升-接口测试5-request库、cookie、session、unittest框架

request库

简介:
Requests库 是 Python编写的,基于urllib 的 HTTP库,使用方便
安装
方法1:

pip install requests

方法2:

pip install requests -i https://pypi.douban.com/simple/

豆瓣镜像:https://pypi.douban.com/simple/
加上-i参数添加镜像源
在这里插入图片描述
检验:
步骤一:pip 中查验
pip list

pip shw 库名

步骤二:pycharm中查验
在这里插入图片描述
在这里插入图片描述

设置http请求语法

res = requests.请求方法(url = “URL地址”,params={k:v},headers ={k:v},data= {k:v},cookies =‘cookies数据’{如:令牌})
请求方法:
get请求 --get()
post请求 --post()
put请求 --put()
delete请求 – delete()

url :待请求的url -string类型
params:查询参数 -字典
data :表单格式的 请求体 -字典
json:json格式的请求体 – 字典
cookies:cookie数据-string类型

入门案例:使用Requests库访问 百度 http://www.baidu.com

import requests
resp = requests.get(url="http://www.baidu.com")
print(resp.text)

应用案例

案例一
【带 查询参数 的get请求】使用Requests库,请求 tpshop商城 搜索商品接口。查询 iphone

import requests
# 发送get请求,指定url,获取响应结果
# 方法一
# resp =requests.get(url ="http://192.168.13.141/Home/Goods/search.html?q=iPhone")
# print(resp.text)

# 方法二
resp = requests.get(url ="http://192.168.13.141/Home/Goods/search.html",params={"q":"iPhone"})
print(resp.text)

在这里插入图片描述
案例二
【带表单数据 的post请求】使用Requests库,完成 tpshop商城 登录接口调用。返回 ”验证码错误“ 即可。

# 发送post请求,指定url,请求头,请求体,获取响应结果
import requests
resp = requests.post("http://192.168.13.141/index.php?m=Home&c=User&a=do_login&t=0.7094195931397276",headers={"Content-Type":"application/x-www-form-urlencoded"},
                     data={"username":"13012345678","password":"1234567","verify_code":"8888"})

# 打印响应结果-文本
print(resp.text)
# 打印响应结果-json
print(resp.json())

{“status”:0,“msg”:“\u9a8c\u8bc1\u7801\u9519\u8bef”}
{‘status’: 0, ‘msg’: ‘验证码错误’}

案例三
【带 json数据 的post请求】使用Requests库,完成 iHRM系统 成功登录。返回 ”令牌数据“。

import requests
# 发送 post 登录请求,指定 url、请求头、请求体,获取响应结果
resp = requests.post(url="http://ihrm-test.itheima.net/api/sys/login",
# headers={"Content-Type": "application/json"},
json={"mobile": "13800000002", "password": "123456"})
# 打印响应结果
print(resp.json())

案例四
【发送 put、delete请求】使用Requests库发送 ihrm系统 修改员工信息、删除员工信息 请求。

# -------- 修改 put
import requests
resp = requests.put(url="http://ihrm-test.itheima.net/api/sys/user/1467780995754229760",
headers={"Authorization": "Bearer 4c51c601-c3f7-4d1a-a738-7848f2439f45"},
json={"username": "齐天大圣"})
print(resp.json())
# -------- 删除 delete
import requests
resp = requests.delete(url="http://ihrm-test.itheima.net/api/sys/user/1467780995754229760",
headers={"Authorization": "Bearer 4c51c601-c3f7-4d1a-a738-7848f2439f45"})
print(resp.json())

cookie

简介
简介:工程师针对 http协议是无连接、无状态特性,设计的 一种技术。可以在浏览器端 存储用户的信息。
特性:
cookie 用于存储 用户临时的不敏感信息。
cookie 位于浏览器(客户端)端。默认大小4k(可以调整)
cookie 中的数据,可以随意被访问,没有安全性可言。
cookie 中存储的数据类型, 受浏览器限制。

Cookie+Session认证方式
在计算机中,认证用户身份的方式有多种!课程中接触 2种:
ihrm项目:token认证。
tpshop项目:cookie+Session认证
在这里插入图片描述
案例5
完整实现 TPshop商城登录,并获取 “我的订单” 页面数据。
获取验证码:http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify
登录:http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login
我的订单:http://tpshoptest.itheima.net/Home/Order/order_list.html

import requests
# 发送验证码请求
resp_v = requests.get(url="http://192.168.13.141/index.php?m=Home&c=User&a=verify&r=0.0.21519623710645064")
# 从获取短信验证码的响应结果中,提取cookie
my_cookie = resp_v.cookies

# 发送登录请求url/请求头、请求体,携带cookie,得到响应结果
resp = requests.post("http://192.168.13.141/index.php?m=Home&c=User&a=do_login&t=0.7094195931397276", data={"username":"13012345678","password":"1234567","verify_code":"8888"},cookies = my_cookie)

print(resp.json())
# 发送查看我的订单请求
resp_o = requests.get(url ="http://192.168.13.141/Oreder/order_list.html",cookies =my_cookie)
print(resp_o.text)

session

简介
简介:也叫会话。通常出现在网络通信中,从客户端借助访问终端登录上服务器,直到 退出登录 所产生的通信数据,保存在会话中。
特性:
Session 用于存储用户的信息。
Session 位于服务端。大小直接使用服务器存储空间
Session 中的数据,不能随意被访问,安全性较高。
Session 中存储的数据类型,受服务器影响,几乎能支持所有的数据类型。

Session自动管理Cookie
因为 Cookie 中的数据,都是 Session 传递的。因此,Session可以直接自动管理 cookie
案例6
借助session重新实现 上述 TPshop商城登录,并获取 “我的订单” 页面数据。

实现步骤:

  1. 创建一个 Session 实例。
  2. 使用 Session 实例,调 get方法,发送 获取验证码请求。(不需要获取cookie)
  3. 使用 同一个 Session 实例,调用 post方法,发送 登录请求。(不需要携带 cookie)
  4. 使用 同一个 Session 实例,调用 get方法,发送 查看我的订单请求。(不需要携带 cookie)
import requests
# 1、创建一个session实例
session = requests.Session()

# 2、使用session实例,调用get方法,发送获取验证码请求(不需要获取cookie)
resp_v = session.get(url="http://192.168.13.141/index.php?m=Home&c=User&a=verify&r=0.0.21519623710645064")

# 3、使用同一个session实例,调用post方法,发送登录请求(不需要获取cookie)
resp = session.post(url="http://192.168.13.141/index.php?m=Home&c=User&a=do_login&t=0.7094195931397276", data={"username":"13012345678","password":"1234567","verify_code":"8888"})
print(resp.json())

# 4、使用同一个session实例,调用get方法,发送登录请求,发送查看我的订单请求
resp_o =session.get(url ="http://192.168.13.141/Oreder/order_list.html")
print(resp_o)

cookie和session的区别

  1. 数据存储位置:
    cookie存储在浏览器;session存储在服务器。
  2. 安全性:
    cookie中的数据可以随意获取,没有安全性可言。Session的数据多为加密存储,安全较高!
  3. 数据类型:
    cookie支持的数据类型受浏览器限制,较少;Session直接使用服务器存储,支持所有数据类型
  4. 大小:
    cookie大小默认 4k; Session 大小约为服务器存储空间大小

获取指定响应数据

常用:
获取url:resp.url
获取响应状态码:resp.status_code
获取cookie:resp.cookies
获取响应头:resp.headers
获取响应体:
文本格式:resp.text
json格式:resp.json()

import requests
resp = requests.get(url="http://www.baidu.com")

# 获取url
print("url =",resp.url)

# 获取响应状态码
print("status_code=",resp.status_code)

# 获取cookie
print("cookies=",resp.cookies)

# 获取响应头
print("header=")

# 获取响应体-文本格式
print("body_text=",resp.text)

# 获取响应体-json格式,当显示jsondecodeerror错误时,说明resp不能转换为json格式
#print("body_json =",resp.json())

在这里插入图片描述

UnitTest框架

UnitTest 是开发人员用来实现 “单元测试” 的框架。测试工程师,可以在自动化 “测试执行” 时使用。
使用 UnitTest 的好处:

  1. 方便管理、维护测试用例。
  2. 提供丰富的断言方法。
  3. 生成测试报告。(需要插件 HTMLTestReport)

TestCase

# 1、导包 import unittest
# 2、定义测试类从 TestCase类继承
class TestXXX(unittest.TestCase):
	pass
# 3、测试方法定义必须以test开头,建议添加编号
class TestXXX(unittest.TestCase):
	def test01_xxx(self):
		pass

Fixture

1、方法级别的setUp(self)tearDown(self)每个普通方法执行前后自动运行
2、类级别的setUpClass(cls)tearDownClass(cls)在类内所有方法之前、之后运行一次

TestSuite

1、实例化测试集对象 suite = unitest.TestSuite()
2、添加指定类的全部测试方法
suite.addTest(unittest.makeSuite(类名))

TestSuite 通过搜索创建测试集
suite = unittest.TestLoader().discover(搜索目录,搜索文件名)
suite = unittest.TestLoader().discover(“./”,"test*.py)

TestRunner

runner = HTMLTestReport(“./report1.html”,description=“描述信息”,title ="报告标题”)
runner.run(suite)

示例

练习案例

登录成功

import unittest
import requests
# 定义测试类
class TestIhrmLogin(unittest.TestCase):
# 添加测试方法
def test01_login_ok(self):
# 发送 post 登录请求,指定 url、请求头、请求体,获取响应结果
resp = requests.post(url="http://ihrm-test.itheima.net/api/sys/login",
json={"mobile": "13800000002", "password": "123456"})
# 打印响应结果
print(resp.json())
# 断言- 响应状态码为 200
self.assertEqual(200, resp.status_code)
# 断言 success 的值为 true
self.assertEqual(True, resp.json().get("success"))
# 断言 code 的值为 10000
self.assertEqual(10000, resp.json().get("code"))
# 断言 message 的值为 操作成功!
self.assertIn("操作成功", resp.json().get("message"))

在这里插入图片描述
断言方法:
assertEqual(参1,参2) :
参1:预期结果。 参2:实际结果。
成功:完全相等。断言通过。不报错!
失败:报错!
assertIn(参1,参2):
参1:预期结果。参2:实际结果。
成功:实际结果中,包含预期结果。断言通过。不报错!
失败:报错!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值