接口自动化测试三部曲: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. 6个tips缓解第三方访问风险

    随着开发和交付的压力越来越大,许多企业选择依赖第三方来帮助运营和发展业务.值得重视的是,第三方软件及服务供应商和合作伙伴也是云环境攻击面的重要组成部分.尽管企业无法完全切断与第三方的关联,但可以在向他 ...

  2. C#微信公众号关注二维码生成、密文方式

    文章说明:是公众号使用自己服务器的处理的其中一篇关注二维码信息处理 1.流程 1.1 需知  全局返回码:这个必须要哦.不然调试的时候接口出的错误怎么处理呢. (闲话:博客的随笔只能添加也给超链呀,‍ ...

  3. Bugku login1

    打开是个普普通通的登录界面,盲猜是注入题,先看看源码吧,没找到什么有用的信息,那就先注册试试 注册admin就已经存在,可能待会就爆破admin的密码也可能,因为没有验证嘛 试试注册其他的 登录发现他 ...

  4. WEB入门——爆破21-28

    WEB21 首先尝试网站后台常见登陆的弱口令,发现错误   则使用burp suite抓包试试看 通过分析,在未填入账号密码时,响应头如下所示: 填入弱口令账号密码,发现响应头如下: 则对应可知账号密 ...

  5. 【每日一题】【双指针/栈/reverse】2022年2月19日-判断是否为回文字符串

    给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文.如果是回文请返回true,否则返回false.   字符串回文指该字符串正序与其逆序逐字符一致.   数据范围:0 < n \l ...

  6. 为什么 Random.Shared 是线程安全的

    在多线程环境中使用 Random 类来生成伪随机数时,很容易出现线程安全问题.例如,当多个线程同时调用 Next 方法时,可能会出现种子被意外修改的情况,导致生成的伪随机数不符合预期. 为了避免这种情 ...

  7. Flaks框架(g对象,session,数据库连接池,信号,flask-script,SQLAlchemy(ORM))

    目录 一:g对象 简介 1.g对象和session的区别 2.g对象实战代码 二:flask-session(借助于第三方插件连接redis保存session ) 1.方式一: 2.方式二(flask ...

  8. 使用NPOI core插入图片

    闲的无聊,封装一个NPOI core插入图片,下面贴上代码,有注释,我就不讲解了 public class ExcelHelper { /// <summary> /// excel插入图 ...

  9. electron中使用adm-zip将多个excel文件压缩进文件夹,使用XLSX以及XLSXStyle生成带样式excel文件

    需求:electron环境下想要实现根据多个表生成多个Excel文件,打包存入文件夹内并压缩下载到本地.(实际场景描述:界面中有软件工程一班学生信息.软件工程二班学生信息.软件工程三班学生信息,上方有 ...

  10. .NET性能优化-使用RecyclableMemoryStream替代MemoryStream

    提到MemoryStream大家可能都不陌生,在编写代码中或多或少有使用过:比如Json序列化反序列化.导出PDF/Excel/Word.进行图片或者文字处理等场景.但是如果使用它高频.大数据量处理这 ...