IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Day01-P接口测试 -> 正文阅读

[网络协议]Day01-P接口测试



# 前言 测开笔记day01

一.接口测试

1. http协议的接口,http请求分几类

  • get,post,delete,put,head,option

2. 状态码

在这里插入图片描述

3. cookie和session,Token的区别

(1)cookie数据存放在客户的浏览器上,session数据放在服务器上

(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session

(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie

(4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,缓存包含cookie,缓存还包括图片等等,清空缓存不等于清空cookie

(5)可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie

鉴权/授权
-----Token就是鉴权,访问的接口是否正常,是否非法访问,绕过前端访问。服务器发出
(作用:防止你跳过页面直接访问他的接口,他需要你带一个来自前一个页面的Token才能证明是你正常访问。 比如:网站-登录-考勤-进入考勤页面(属于正常访问),网站-登录-直接进入考勤页面(这就是绕过前端访问,这时候你要拿到上一个页面的token才能做到))
-------Key(Appkey)授权,是否具有访问接口的权限,使用第三方时,需要授权。

4. request请求

'''
这节课知识点
1.响应正文:针对请求从服务响应回来的数据:格式一般有html xml json
2.html xml json-->都可以用text获取
3.html xml json-->都用json会报错!只有json类型的返回值才支持json
4.验证码处理(图片or短信):a.屏蔽它,b.万能的,c.数据库查实时的
5.安全问题回答:要么屏蔽,要么写代码解决
6.响应报文重要关注点是:状态码,响应头,响应正文
'''
import requests

#get  不带参数
url='http://120.78.128.25:8765/Index/login.html'
res=requests.get(url)  #返回一个消息实体
print(res)

#响应头  响应状态码  响应报文/正文
print('响应头:',res.headers)
print('响应状态码:',res.status_code)
print('响应正文:',res.text)

#post请求  带参数
url='http://test.lemonban.com/futureloan/mvc/api/member/login'
data={'mobilephone':'15873731222','pwd':'123456'}
res=requests.post(url,data)
print(res)
print('响应头:',res.headers)
print('响应状态码:',res.status_code)
print('cookies:',res.cookies)
print('响应正文1:',res.text,type(res.text))
print('响应正文2:',res.json(),type(res.json()))# 推荐使用,方便用key取值


#充值
recharge_url='http://test.lemonban.com/futureloan/mvc/api/member/recharge'
recharge_data={'mobilephone':'15873731222','amount':"1000"}
header={'User-Agent':'Mozilla/5.0'}#浏览器发出,这个信息可以伪装成py发出。
recharge_res=requests.get(recharge_url,recharge_data,headers=header,cookies=res.cookies)
print('充值结果:',recharge_res.json())
#recharge_res.request.headers请求头;recharge_res.headers响应头
print('请求头:',recharge_res.request.headers)


第二种方法

import requests


class HttpRequest:
    '''
     1.利用request封装get,post请求
     2.url
     3.param 传递的参数,非必填参数
     4.method:请求方法支持get post 等等
     '''
    def http_request(self,url,data,method,cookie=None):
        if method=='get':
            res=requests.get(url, data, cookies=cookie)
        else:
            res=requests.post(url, data,cookies=cookie)
        return res

if __name__ == '__main__':

    #登录请求
    url = 'http://test.lemonban.com/futureloan/mvc/api/member/login'
    data = {'mobilephone': '15873731222', 'pwd': '123456'}
    login_res=HttpRequest().http_request(url,data,'post')
    print('登录结果是:',login_res.json())

    # 充值请求
    recharge_url = 'http://test.lemonban.com/futureloan/mvc/api/member/recharge'
    recharge_data = {'mobilephone': '15873731222', 'amount': "1000"}
    recharge_res=HttpRequest().http_request(recharge_url,recharge_data,'get',login_res.cookies)
    print('充值结果是:',recharge_res.json())


5. 单元测试

1.先写一个测试类
class MathMethod:
    def __init__(self,a,b):
        self.a=a
        self.b=b

    def add(self):
        return self.a+self.b

    def multi(self):
        return self.a*self.b

2.单元测试代码实现
'''
接口测试的本质:测试类里面的函数
单元测试的本质:测试函数  代码级别
单元测试的框架  unitest+接口

单元测试的框架
1.写用例  (TestCase)
2.执行用例 (1.TestLoader加载用例,2.TestSuite存储用例)
3.对比结果(断言 Assert)
4.出报告(TextTestRunner)

抓异常:
 try:...except AssertionError as e:
'''
import unittest
from hanshu.math_method import MathMethod
#写一个测试类  对我自己写的math method模块里面的类 进行单元测试

class TestMathMethod(unittest.TestCase):
    '''
    编写测试用例
    1.一个用例就是一个函数,不能传参,只有self关键字
    2.所有的用例(所有的函数,都是test开头test_)
    '''
    def test_add_two_math(self):
        res=MathMethod(1,1).add()
        print('加法结果是:',res)
        self.assertEqual(0,res) #断言

    def test_add_two_ahengfa(self):
        res=MathMethod(1,5).multi()
        print('2结果是:',res)
        try:
            self.assertEqual(6, res)
        except AssertionError as e:
            print('出错了!错误信息是{}'.format(e))
            raise e#抛出异常

    def test_add_two_Bhengfa(self):
        res=MathMethod(5,5).multi()
        print('结果是:',res)

if __name__ == '__main__':
    unittest.main()#执行所有的案例

3.
import unittest
from hanshu.class_01 import TestMathMethod
import HTMLTestRunner

#执行用例 (1.TestLoader加载用例,2.TestSuite存储用例)

suite=unittest.TestSuite()#存储用例
#方法一:一条一条的加载用例
suite.addTest(TestMathMethod('test_add_two_Bhengfa'))
suite.addTest(TestMathMethod('test_add_two_ahengfa'))

#方法二:TestLoader,一次加载所有的案例
loader=unittest.TestLoader()#创建加载器
suite.addTest(loader.loadTestsFromTestCase(TestMathMethod)) #加载所有用例

#执行  上下文管理器
with open('test.txt','w+',encoding='UTF-8') as file:#报告
    runner=unittest.TextTestRunner(stream=file,verbosity=2)
    runner.run(suite)

#执行  上下文管理器  html格式的报告
with open('test_report.html','wb') as file:#报告
    runner=HTMLTestRunner.HTMLTestRunner(stream=file,verbosity=2,title='vivi写的报告', description='python11')
    runner.run(suite)

6. 断言assert

在这里插入图片描述

7. setUp ,tearDown 夹心饼干(继承自unittest.TestCase)

 def setUp(self):
        print('我要开始执行用例了')

 def tearDown(self):
        print('执行完毕!')
        
    '''
    1.可以不写吗?----->可以
    2.什么时候执行setUp?----->执行每一条测试用例之前会执行setUp
    3.什么时候执行tearDown?----->每一条测试用例执行完后都会执行tearDown
    4.如果有操作必须在执行用例之前准备好,那就放在setUp里面(比如连接数据库)
    有操作必须在执行用例完毕之后要清除,那就放在tearDown里面。
    '''

二.python反射

面试题:
测试过程中,如果第二条测试需要用到第一条测试某个值,写单元测试时该怎么处理这个问题?
1.全局变量 global
2.反射
3.写在setUp里面。每次执行时,先执行setUp里面的代码。


class GetDate:
	Cookie='小黄'

print(GetDate.Cookie)
setattr(GetDate,'Cookie','小黄')#直接把类里面的值做修改
print(hasattr(GetDate,'Cookie'))#判断是否有这个属性值
print(getattr(GetDate,'Cookie'))#attribute属性
delattr(GetDate,'Cookie')#删除
print(hasattr(GetDate,'Cookie')

三.练习题

题目一:请完成http_request类的单元测试
要求如下:
1.写http_request类做作业
2.提供2个接口
	登录url:http://test.lemonban.com/futureloan/mvc/api/member/login
	充值url:http://test.lemonban.com/futureloan/mvc/api/member/recharge
3.针对登录接口写4个用例:正常登录、不输入密码、不输入账号、输入错误的密码
  充值接口写4个用例:正常充值、不输入账号、不输入金额、输入错误的金额负数
4.请利用任何一种方法实现用例的加载并执行
5.生长html测试报告



  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:56:03  更:2022-03-08 22:57:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:25:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码