接口自动化测试三部曲:1、构造请求  2、判断结果  3、数据库查询

1、Python的第三方包:requests

简介:requests可以用来做接口测试、接口自动化测试、爬虫等

requests的环境搭建:管理员身份在cmd运行:pip3 install requests -i https://pypi.tuna.tsinghua.edu.cn/simple(pip和pip3是一样的东西,但是安装了loadrunner的接只能用pip3不能用pip了)

requests如何做http请求(请求接口)

1.1、导入包:import requests

1.2、构造请求:

如果是get请求:

#用url存放接口地址,注意要加引号
#获取首页轮播图接口地址
url = "http://118.24.105.78:2333/get_title_img" #接口地址一定是一个字符串
h = {"Content-Type":"application/json"}
#使用requests去请求get类型的接口,最终的返回值就是接口返回的内容了
res = requests.get(url=url,headers=h) #就相当于postman里边去填写接口地址
#获取返回值:res.text
print(res.text)

如果是post请求:

#post请求:用户登录接口 (依次从接口文档上填写请求地址、请求头、请求数据)
u = "http://118.24.105.78:2333/login" #接口地址
h = {"Content-Type":"application/json"} #请求头:字典格式
d = {"username":"liuyun1","password":"a12345678"} #请求数据:json格式、字典 res = requests.post(url=u,headers=h,json=d) #依次传参
print(res.text)

1.3、判断结果(以用户登录为例)

需要判断两个结果,先是接口状态码,后是返回值结果码

首先需要通过判断接口状态码看接口是否正确(如果接口都不正确了,就没有必要看返回结果了),然后看接口返回结果中的status是否=200,等于200标志着接口执行成功(返回的结果是字符串类型的字典格式,我们首先要将字符串真正的转换为字典,这里字符串转地址用魔鬼方法evar也不行,只能用.json()方法)

#判断结果(要判断两个:先接口状态码和后结果返回值)
#状态码:标志着接口的状态:预判接口是否有问题 res.status_code获取状态码
assert res.status_code == 200 #运行这步要把前面的print(res.text)删掉或者注释掉
#结果返回值(结果码) 接口返回的结果是放在res中了,但是它存放的是字符串类型,python中用res.json()将字符串转换为字典类型
assert res.json()["status"] == 200

在这里可能会遇到断言错误的问题,以注册为例

遇到这种情况,就要排查,首先从日志中可以看出是判断结果码那块的断言报错,说明接口返回的结果码不等于200,我们可以先把接口返回的结果打印出来

1.4、查询数据库

使用pymysql查询数据库,由于前面已经封装好了pymysql的查询方法,要想查询数据库,首先就是将qurey方法导入进来:from dbtools import query(兄弟关系导方法)

#查询数据库
sql = "select * from t_user where username = '{}'".format(d["username"])
# print(sql) #从这里就可以看见数据库语句拼接起来了
# r = query(sql)
assert len(query(sql)) != 0
print("登录成功的测试用例通过")

注意注意:由于我们是调用的query方法,封装query()方法时的url地址一定要和构造请求的url地址一致,否则会报错(接口地址要和数据库地址一致)

2、关联

以登录-退出登录为例

import requests
from dbtools import query #登录
u = "http://118.24.105.78:2333/login"
h = {"Content-Type":"application/json"}
d = {"username":"liuyun1","password":"a12345678"} res = requests.post(url=u,headers=h,json=d) assert res.status_code == 200
assert res.json()["status"] == 200 sql = "select * from t_user where username = '{}'".format(d["username"])
assert len(query(sql)) !=0
print("用户登录成功") #取token值
token = res.json()["data"]["token"] #关联用户退出
u = "http://118.24.105.78:2333/logout"
h = {"Content-Type":"application/json","token":token} res = requests.get(url=u,headers=h) assert res.status_code == 200
assert res.json()["status"] == 200
print("用户退出登录成功")

the end:

Python接口自动化测试(1)的更多相关文章

  1. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  2. python接口自动化测试七:获取登录的Cookies

    python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

  3. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

  4. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  5. python 接口自动化测试(三)

    1.WriteIni.py import ConfigParser cf = ConfigParser.ConfigParser() cf.add_section("PC_WSDL" ...

  6. 记录python接口自动化测试--简单总结一下学习过程(第十目)

    至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...

  7. python接口自动化测试框架实现之字符串插入变量(字符串参数化)

    问题: 在做接口自动化测试的时候,请求报文是json串,但是根据项目规则必须转换成字符串,然后在开头拼接“data=” 接口中很多入参值需要进行参数化. 解决方案: 1.Python并没有对在字符串中 ...

  8. python - 接口自动化测试 - RunTest - 测试用例加载执行/测试报告生成

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: run_test.py @ide: PyCharm Com ...

  9. python - 接口自动化测试实战 - case1 - 再次优化版

    本次优化: 1.  各级分Package 2.  封装[ReadExcel]类 3.  封装[ReadConfig]类 4.  封装[GetLog]类 5.  引入ddt数据驱动测试,优化测试用例代码 ...

  10. python接口自动化测试(一)

    本节开始,开始介绍python的接口自动化测试,首先需要搭建python开发环境,到https://www.python.org/下载python 版本直接安装就以了,建议 下载python2.7.1 ...

随机推荐

  1. 禁用显卡自动更新(解决官办驱动和OEM驱动相冲)

    起因 有一天打开MC(我的世界)时候突然显示显卡不支持,想了想可能是自己捣鼓电脑的时候弄坏了,提示说版本不支持,一看自己的驱动还是上古版本,但是之前都是可以正常玩的,想着更新下驱动就行了呗,更新完&q ...

  2. flex布局中,元素等间距设置,包括第一个元素的左边,最后一个元素的右边,也等间距

    项目中很多地方会用到等间距排放的场景,使用flex 布局可以很方便的实现 .fu{ display: flex; ustify-content: space-between; } 通过上面代码,可以实 ...

  3. jquery组件解决option选项框的样式自定义方案

    记录一下今天工作中遇到的一个需求和自行找到的解决办法 需求: 在原始的select选项框中的增加一个标识.(我想增加一个具有样式的span元素,试了半天在option里无法添加span,更别说具有样式 ...

  4. 说一下 ArrayDeque 和 LinkedList 的区别?

    大家好,我是小彭. 在上一篇文章里,我们聊到了基于链表的 Queue 和 Stack 实现 -- LinkedList.那么 Java 中有没有基于数组的 Queue 和 Stack 实现呢?今天我们 ...

  5. 在链表上实现 Partition 以及荷兰国旗问题

    在链表上实现 Partition 以及荷兰国旗问题 作者:Grey 原文地址: 博客园:在链表上实现 Partition 以及荷兰国旗问题 CSDN:在链表上实现 Partition 以及荷兰国旗问题 ...

  6. 火山引擎 DataLeap 的 Data Catalog 系统公有云实践

      Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景.本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Ca ...

  7. [论文阅读] 颜色迁移-Linear Monge-Kantorovitch(MKL)

    [论文阅读] 颜色迁移-Linear Monge-Kantorovitch(MKL) 文章: The Linear Monge-Kantorovitch Linear Colour Mapping f ...

  8. 【Hadoop学习】中:HDFS、shell操作、客户端API操作、数据流、1NN、2NN原理、DataNode配置

    一.概述 1.背景.定义.使用场景(一次写入.不支持修改) 2.优(容错)缺点(延迟.不支持小文件.不支持修改) 3.组成架构 NameNode:Master,管理命名空间.配置策略 DataNode ...

  9. 玩转 Go 生态|Hertz WebSocket 扩展简析

    WebSocket 是一种可以在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层.WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在 W ...

  10. 从0到1学Python丨图像平滑方法的两种非线性滤波:中值滤波、双边滤波

    摘要:常用于消除噪声的图像平滑方法包括三种线性滤波(均值滤波.方框滤波.高斯滤波)和两种非线性滤波(中值滤波.双边滤波),本文将详细讲解两种非线性滤波方法. 本文分享自华为云社区<[Python ...