我们可以用Jmeter做接口测试,但是呢个人觉得那个有点局限性,用python就灵活很多,
可以按自己的思路来构建比较灵活,下面给大家介绍一个简单的接口测试实例。
一、我们的思路如下:
首先我们要弄清楚我们的整个思路:
1.先把我们的测试数据准备好,即post的数据(当然get方法也可以发送请求数据)
2.然后我们向指定的URL发送请求(post方法)
3获取repones的结果数据,
4.判断repones结果是否有符合预期的数据
二、我这里举一个注册vpn账号的例子:
下面是我们要通过post方法请求的数据
Headers要先申明类型,然后通过requests.post方法向url发送数据请求。
三、请求数据后我们等待服务器响应,并且获取repones的数据
我们通过text方法获取到响应报文的内容,通过stauts_code获取响应的状态码
四、我们对获取到的报文做判断,是否含有预期的数据在里面
对code进行判断,是否为200,有则表示和服务器会话是正常的
对报文的内容进行判断,验证是否含有预期的数据
五、运行看结果
结果是ok的,可以注册成功
好,到这里我们一个简单的接口测试实例就讲完了。
——————————————————————————————————————————————————————————
一个网站登录接口测试环境的练习
1.登录demo环境,爬取登录后画面的代码。
# coding=utf-8
import csv
import random
import io
from urllib import request,parse,error
import http.cookiejar
import urllib
import re
from bs4 import BeautifulSoup if __name__=="__main__":
def GetWebPageSource(url,values):
# url = "https://www.incnjp.com/thread-4578658-1-1.html"
data = parse.urlencode(values).encode('utf-8') # header
user_agent = ""#代理-模拟浏览器,这里为空也可以跑通(只是发送给服务器请求),如果服务器有反爬虫,那么这里需要写浏览器相关的代理信息模拟浏览器(即反反爬虫机制)
headers = {'User-Agent': user_agent, 'Connection': 'keep-alive'} # 声明cookie 声明opener
cookie_filename = 'cookie.txt'
cookie = http.cookiejar.MozillaCookieJar(cookie_filename)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler) # 声明request
request = urllib.request.Request(url, data, headers)
# 得到响应
response = opener.open(request)
html = response.read().decode('utf-8')
# 保存cookie
cookie.save(ignore_discard=True, ignore_expires=True) return html url = "http://demo.pingnanlearning.com/test/login/index.php" values = {"username": "sasa",
"password": "",
"phone2": ""
}
html = GetWebPageSource(url,values)
print(html)
运行结果:
1.判断用户是否登录demo环境成功
# coding=utf-8
import csv
import random
import io
from urllib import request,parse,error
import http.cookiejar
import urllib
import re
from bs4 import BeautifulSoup if __name__=="__main__":
def GetWebPageSource(url,values):
# url = "https://www.incnjp.com/thread-4578658-1-1.html"
data = parse.urlencode(values).encode('utf-8') # header
user_agent = ""#这里可以为空(但只是发送给服务器请求-服务器没有反爬虫机智前提下可以跑通);如果服务器有反爬虫,那么我们这里需要写浏览器相关的代理信息(即反反爬虫机制)
headers = {'User-Agent': user_agent, 'Connection': 'keep-alive'} # 声明cookie 声明opener
cookie_filename = 'cookie.txt'
cookie = http.cookiejar.MozillaCookieJar(cookie_filename)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler) # 声明request
request = urllib.request.Request(url, data, headers)
# 得到响应
response = opener.open(request)
html = response.read().decode('utf-8')
# 保存cookie
cookie.save(ignore_discard=True, ignore_expires=True) return html url = "http://demo.pingnanlearning.com/test/login/index.php" values = {"username": "sasa",
"password": "",
"phone2": ""
}
html = GetWebPageSource(url,values) # 判断登陆成功与否
isLogin = False soup = BeautifulSoup(html, "lxml")
hrefList = soup.select('a[target="_blank"]')
for m in hrefList:
if m.text == "个人中心":
isLogin = True
if isLogin:
print("小sasa登陆成功!")
else:
print("小sasa登陆失败!")
# print(html)
运行效果图:
3.2-面向对象代码优化
# coding=utf-8
import csv
import random
import io
from urllib import request,parse,error
import http.cookiejar
import urllib
import re
from bs4 import BeautifulSoup # 发送请求获得响应
def GetWebPageSource(url, values):
data = parse.urlencode(values).encode('utf-8') # header
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"#这里可以为空(但只是发送给服务器请求-服务器没有反爬虫机智前提下可以跑通);如果服务器有反爬虫,那么我们这里需要写浏览器相关的代理信息(即反反爬虫机制)
headers = {'User-Agent': user_agent, 'Connection': 'keep-alive'} # 声明cookie 声明opener
cookie_filename = 'cookie.txt'
cookie = http.cookiejar.MozillaCookieJar(cookie_filename)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler) # 声明request
request = urllib.request.Request(url, data, headers)
# 得到响应
response = opener.open(request)
html = response.read().decode('utf-8')
# 保存cookie
cookie.save(ignore_discard=True, ignore_expires=True) return html # 判断登陆成功与否
def IsResSuccess(html):
isLogin = False soup = BeautifulSoup(html, "lxml")
hrefList = soup.select('a[target="_blank"]')
for m in hrefList:
if m.text == "个人中心":
isLogin = True
break#退出循环,之后不再循环,继续执行下面的return代码。(continue,当次循环continue下代码不执行,跳出当次循环,继续下一次循环)
return isLogin#不是每个函数都需要返回值 if __name__=="__main__": url = "http://demo.pingnanlearning.com/test/login/index.php"
values = {"username": "sasa",
"password": "",
"phone2": ""
}
html = GetWebPageSource(url,values) #判断登陆成功与否
if IsResSuccess(html):
print("小sasa登陆成功!")
else:
print("小sasa登陆失败!")
【Python接口测试】简单系统登录接口测试实例的更多相关文章
-
Appium+python 一个简单的登录测试实例
# coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTestRun ...
-
Python 实现简单的登录注册界面
Python 实现简单的登录注册界面 注意:编写代码之前需要导入很重要的包 import tkinter as tk import pickle from tkinter import message ...
-
Python 做简单的登录系统
案例 之 登录系统原创作品1 该随笔 仅插入部分代码:全部py文件源代码请从百度网盘自行下载! 链接:https://pan.baidu.com/s/1_sTcDvs5XEGDcnpoQEIrMg 提 ...
-
python一个简单的登录
文件目录下有两个文件 user_name.txt lock_file.txt 实际中可以读数据库里的信息 代码如下 #encoding = utf-8 import sys user_file = ' ...
-
python实现简单的登录管理
import json,timeusername=[]userpasswd=[]def login_success_file(name): try: f=open(r"F:/login_su ...
-
PHP简单模拟登录功能实例分享
1.curl实现模拟登录的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话) <?php $cookie_jar = tempnam('./tmp','cookie ...
-
python+selenium简单实现拖动元素实例
from selenium import webdriver#引入ActionChains类from selenium.webdriver.common.action_chains impo ...
-
python之unittest框架实现接口测试实例
python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...
-
jmeter旅程第二站:jmeter登录接口测试
因为上一篇已经讲了jmeter抓包,那么接下来会将讲解jmeter接口测试. 这里以浏览器为例. 从简到繁,那么首先先以比较常见的登录做实例. 目前登录操作有这几种:账户是否存在.账户密码登录.验证码 ...
随机推荐
-
受限玻尔兹曼机(RBM)学习笔记(七)RBM 训练算法
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算 ...
-
互联网分享知识(一转载 http://www.cnblogs.com/baochuan/p/4636103.html)
风雪之隅-Laruence的博客 http://www.laruence.com/ PHP开发组成员, Zend兼职顾问, PHP7核心开发者, Yaf, Yar, Yac等项目作者.偏向P ...
-
[HDOJ2512]一卡通大冒险(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 给一个数n,问1~n这n个数内的划分.设dp(i,j)为i划分为j个集合时有多少个. 初始化条件 ...
-
jetty属性
jetty 版本信息 Jetty7 - 此插件更名为jetty-maven-plugin,以便更符合maven2的协定.为了在Web应用做快速应用开发做准备,详见多Web应用源目录. 为 ...
-
各个Maven仓库镜像(包括国内)
各个Maven仓库镜像(包括国内) 衽孤魍墓 ゅ槭 众矿工唯唯诺诺我在旁哭笑不得原 宦蠃サ 骘猩池 粑涫汾滹 吧滔哌蹋 飑俗た 狃攵庾唾 想必是想挡住什么我想反正这笔筒也不是 翡蜮胼 娴左 ...
-
oracle 表查询(一)
通过scott用户下的表来演示如何使用select语句,接下来对emp.dept.salgrade表结构进行解说. emp 雇员表字段名称 数据类型 是否为空 备注-------- ...
-
tomcat集群与负载均衡
参考文章http://kalogen.iteye.com/blog/784908,加上了自己调试过程中遇到的问题. 注1:实现此集群的方法参考了网上的很多文章,但由于很多文章都表明是原创的,故无法知道 ...
-
Python里面 search0和 match0的区别?
这是正则表达式里面的函数: match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配: 也就是说match()只有在0位置匹配成功的话才有返回,如 ...
-
hadoop hdfs ha 模式
这是我自己在公司一个搭建公司大数据框架是自己的选项,在配置yarn ha 出现了nodemanager起不来的问题于是我把yarn搭建为普通yarn 如果有人解决 高yarn的nodemanager问 ...
-
layui xtree 实现一级节点单选 ,子节点复选
在外部定义变量和方法 //定义变量 接收*节点的值 var topValue; // 获取*节点值的方法 function getParent(value) { var val = project ...