我们可以用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接口测试】简单系统登录接口测试实例的更多相关文章

  1. Appium+python 一个简单的登录测试实例

    # coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTestRun ...

  2. Python 实现简单的登录注册界面

    Python 实现简单的登录注册界面 注意:编写代码之前需要导入很重要的包 import tkinter as tk import pickle from tkinter import message ...

  3. Python 做简单的登录系统

    案例 之 登录系统原创作品1 该随笔 仅插入部分代码:全部py文件源代码请从百度网盘自行下载! 链接:https://pan.baidu.com/s/1_sTcDvs5XEGDcnpoQEIrMg 提 ...

  4. python+tkinter 简单的登录窗口demo

    一个简单的登录窗口布局,可以用于日常快速搭建一个简单的窗口类. from tkinter import * import tkinter.messagebox class LoginUi: def _ ...

  5. python一个简单的登录

    文件目录下有两个文件 user_name.txt lock_file.txt 实际中可以读数据库里的信息 代码如下 #encoding = utf-8 import sys user_file = ' ...

  6. python实现简单的登录管理

    import json,timeusername=[]userpasswd=[]def login_success_file(name): try: f=open(r"F:/login_su ...

  7. PHP简单模拟登录功能实例分享

    1.curl实现模拟登录的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话) <?php $cookie_jar = tempnam('./tmp','cookie ...

  8. python+selenium简单实现拖动元素实例

    from  selenium  import  webdriver#引入ActionChains类from  selenium.webdriver.common.action_chains  impo ...

  9. python之unittest框架实现接口测试实例

    python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...

随机推荐

  1. Ubuntu输入法切换问题

    不知道改了个什么东西,Ubuntu 15.04 中Ctrl+Space不能切换输入法了,因此不能输入英文,shell就更是没法工作,在设置里面找了好久,“文本输入”/“语言支持”/“键盘”里面都没找到 ...

  2. [Z]修炼成C++高手必看的C++书单

    增添于网上的一些书单: C++/OPP/OOD系列: 层级一:语法/语意(C++) [Lippman2000] Essential C++ Essential C++,by Stanley B. Li ...

  3. Android Studio Error:Connection timed out: connect.解决方案

    遇到了这样的错误: Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure the ...

  4. XML读取(string形式进行读取)

    #region 测试XML二进制读取 string strXmlData = "<xml><ToUserName><![CDATA[gh_ef65912f88f ...

  5. windows下使用git管理代码,其中出现的问题的解决办法

    和朋友共同开发一个小项目,所以就涉及到了代码管理这块,刚开始想到的是使用svn,但是外网访问svn的时候需要使用花生壳来弄一个动态的域名,中间出了很多错误,感觉有点麻烦,所以就想到看看还有别的管理代码 ...

  6. 深入理解 Neutron -- OpenStack 网络实现(4):网络名字空间

    问题导读1.如何查看网络名字空间?2.网络名字空间开头的名字有什么规律?3.dhcp服务是如何实现的?4.router的实现是通过iptables进行的是否正确?5.SNAT和DNAT规则有什么作用? ...

  7. 题目1459:Prime ring problem(素数环问题——递归算法)

    题目链接:http://ac.jobdu.com/problem.php?pid=1459 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  8. windows桌面通知区域不显示音量图标的解决方法

    在windows系统桌面通知区域一般都是显示的输入法.电源.网络.音量及托盘的应用程序等内容 通知区域图标显示与否与控制面板的通知区域图标的设置有关,我们有时会遇到通知区域不显示个别图标的情况,如不显 ...

  9. Angular打开页面隐藏显示表达式

    1.使用 ng-cloak, 同时要在css加入一行 [ng-cloak] {display: none;} 样式 [ng:cloak], [ng-cloak], [data-ng-cloak], [ ...

  10. np.tile 函数使用

    >>> import numpy>>> numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次array([0, 0, 0, 0, 0, ...