python+untitest+request实现接口自动化测试

  • python+untitest+request实现接口自动化测试
    • 目录结构
    • 实现步骤描述
    • post接口
    • get接口
    • 接口间token调用
    • 下载
    • 上传
    • HTMLTestRunner
    • run

python+untitest+request实现接口自动化测试

目录结构

  1. report
  2. test_case
  3. run_test_case.py

实现步骤描述

  1. 在test_case中,使用untitest把每个接口写成测试脚本,每个接口写一个测试脚本,但是包含多个测试用例(用例名称以test开头)
  2. 使用discover()方法,自动匹配查找测试用例,将所有测试用例组装到测试套件中,然后通过run执行discover
  3. 使用HTMLTestRunner生成测试报告

post接口

#coding:utf-8
import urllibimport requests
import json
import unittest
from login import get_loginclass post_request(unittest.TestCase):u'''01:正常登录 02:密码错误 03:登录账号密码错误'''def setUp(self):self.post_url = ''self.header = {"Accept": "Accept - Encoding": "Content-Type": "Cookie": }def test_post_01(self):u'''注释不显示'''# u'''登录测试-正向,账号:wangm/密码:1234567'''url = self.post_urlheader = self.header#data = {"userName": "wangm", "passWord":"1234567"}data = {"username" : "wangm","password" : 1234567,"token":get_login()}#将data序列化为json格式数据,传递给data参数r = requests.post(url,data=data , headers = header)print(r.status_code)print(r.text)#result = r.json()['code']#获取状态码#print(result)#断言#self.assertEqual(200,result)self.assertIn('message',r.text)#self.assertTrue('success' in r.text)def test_post_02(self):u'''登陆测试-密码错误,账号:wangm/密码L23'''url = self.post_urlheader = self.headerdata = {"username": "wangm","password": 123,"token":get_login()}r = requests.post(url,data=data, headers = header)print(r.status_code)print(r.text)def test_post_03(self):u'''登陆测试-密码错误,账号:wangm/密码L23'''url = self.post_urlheader = self.headerdata = {"username": "wang","password": 123,"token":get_login()}r = requests.post(url,data=data, headers = header)print(r.status_code)print(r.text)def tearDown(self):passif __name__ =='__main__':unittest.main()#data=json.dumps(data)

get接口

#coding:utf-8
import requests
import unittest
from login import get_loginclass get_request(unittest.TestCase):def setUp(self):self.get_url = " "self.header = {"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8","x-token": get_login()}def test_get_01(self):u'''描述'''url = self.get_urlheader = self.headerdata ={"page":1,"size":12,"keyword":"","token":get_login()}r = requests.get(url,data=data,headers=header)print( r.text)def tearDown(self):passif __name__ == '__main__':unittest.main()

接口间token调用

import requests
import jsondef get_login():url = ""data = {"username" :"wangm","password" :"1234567"}headers = {"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"}res = requests.post(url=url,data=data,headers=headers)return (res.json()["data"]["token"])token  = str(get_login())
#print(token,"确认token成功返回")
print(token)#从响应结果中获取token值

下载

#coding:utf-8
#只要fidder开着,涉及SSL安全验证问题,运行失败,关闭fidder后,运行成功
import requests
import unittest
from login import get_loginclass get_request(unittest.TestCase):def setUp(self):self.get_url = ''self.header = {"Cookie":"Accept":"Connection":"Accept-Language":"token":get_login()}def test_get_01(self):url = self.get_urlheader = self.header#data = {#}r = requests.get(url=url,headers=header)#print(r.text)#open打开excel文件,保存为后缀为xls的文件fp = open("vehicleModel.xlsx","wb")  #"w":写入  "b":二进制fp.write(r.content)fp.close()#print()def tearDown(self):passif __name__ == '__main__':unittest.main()

上传

#coding:utf-8
import requests
import unittest
from login import get_loginclass post_request(unittest.TestCase):def setUp(self):self.url = ''self.header = {#"Cookie": "x - token": "Content - Type": }def test_post_01(self):url = self.urlheaders = self.headerdata = {"Content - Disposition": "form - data","name": "file","filename": "vehicleModel.xlsx","Content - Type": "application / vnd.openxmlformats - officedocument.spreadsheetml.sheet","token": get_login(),}files = {"file": ("vehicleModel.xlsx", open("C:\\Users\\Kst\\Desktop\\vehicleModel.xlsx", "rb"), "text/plain", {}),#cookies=get_login()}r = requests.post(url=url,headers=headers,data=data,files=files)print(r.status_code)print(r.text)def tearDown(self):passif __name__ == '__main__':unittest.main()

HTMLTestRunner

将HTMLTestRunner.py文件放入Lib下,不同的HTMLTestRunner会产生不同样式的测试报告

run

# coding=utf-8
#https://www.jb51.net/article/151626.htm
#不发送邮件
import unittest
import HTMLTestRunner
import time
# 相对路径
test_dir ='./test_case'
test_dir1 ='./report'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
# 定义带有当前测试时间的报告,防止前一次报告被覆盖
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename = test_dir1 + '/' + now + 'result.html'
# 二进制打开,准备写入文件fp = open(filename, 'wb')
# 定义测试报告
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'接口自动化测试报告', description=u'环境:Windows 10 浏览器:chrome 执行人:汪敏 用例执行情况')
runner.run(discover)#discover加载测试用例

python+untitest+request实现接口自动化测试相关推荐

  1. 基于python+unittest简单实现接口自动化测试实战教程

    目录 1.前言 为什么要做接口自动化测试? 为什么要自己写框架呢? 2.一个现有的简单接口例子 接口信息如下 3.测试思路 原始脚本实现 未优化 优化 第一版 优化 第二版 优化 第三版 最终输出日志 ...

  2. [python自动化]简单实现接口自动化测试(基于python+unittest)

    简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Python自带的Unittest框架调用,期望各位可以通过本文对接口自 ...

  3. python+requests+unittest+excel_接口自动化测试 unittest+request+excel(踩‘坑’)

    通过运行主函数,返回的参数,报json解析错误 正常的返回参数,应该如图 造成这个原因的是: python从excel中解析出来的数据类型不是字典,是字符串,所以无法传递给requests当做请求参数 ...

  4. python+robotframework_python+robot framework接口自动化测试

    转载:http://www.cnblogs.com/nzg-noway/p/6651957.html python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 目前我们需要 ...

  5. 一整套的软件测试学习视频、包括web自动化、APP自动化、接口自动化,以及python语言,基础知识讲解和项目实践,学习后可收获python、web/APP/接口自动化测试。

    买的自动化测试学习视频,学完后对自动化测试能力提升了不少,觉得老师讲的很不错,分享给有需要学习的人学习 一.web自动化 百度网盘链接:https://pan.baidu.com/s/1e2fctYu ...

  6. Python 实现 dubbo 协议接口自动化测试

    前言 python 语言也可以实现对 dubbo协议的接口进行调用与测试,可以使用 python+hessian 结合的方式,也可以使用 python+telnet 结合的方式模拟命令行的模式来实现对 ...

  7. python web api 自动化测试_基于Python + requests 的web接口自动化测试框架

    之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用python实现,将代码和用例分离,易于维护. 项目背景 公司的软件采用B/S架构,进行数据存储.分析.管理 工具选择 pytho ...

  8. python接口测试demo_python http接口自动化测试简单demo

    import xlrd from xlutils.copy import copy import requests import json import xlwt # 结果比较 def compare ...

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

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

最新文章

  1. 如何在Evolution中加密(六)
  2. Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分
  3. mysql 36条军规_mysql开发36条军规(转)
  4. 英语口语 week14 Friday
  5. 相册权限_手机相册太乱?1分钟教你快速管理自己的照片,非常好用!
  6. C#:设置CefSharp的一些参数,比如忽略安全证书
  7. mysql删除重复记录只保留一条
  8. (HDU)1089 --A+B for Input-Output Practice (I)(输入输出练习(I))
  9. python程序设计基础与应用 机械工业出版社_Python程序设计——从编程基础到专业应用...
  10. Unity插件——Odin 学习笔记(三)
  11. 面试公司Offer——我的Python求职之路
  12. Cesium火灾动画(模型动画,粒子特效)
  13. MacBook怎样装Win10 双系统玩转Win10
  14. Android.mk编译java动态库
  15. 【Matlab】用程序制作简单音乐
  16. 码农微信公众账号推荐
  17. 2022.12.3 英语背诵
  18. 整合nacos配置中心启动报c.a.c.n.c.NacosPropertySourceBuilder: 101 - get data from Nacos error,dataId:xxx.yml
  19. 先验算法(Apriori Algorithm)原理及python代码实现
  20. 巴塔机器人_《超级机器人大战V》全SR流程攻略

热门文章

  1. Android 仿淘宝京东商品详情页阻力翻页效果
  2. SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用
  3. 安装 Hana Studio
  4. 测试人生 | 低学历无未来?从小公司到拿下年薪45W+ ,这个90后小哥哥好励志~
  5. 云服务器打不开,为什么打不开云服务器失败怎么回事
  6. 四个小方块组成一个方块的标志_四个“口”字组成一个方块的是什么牌子的标志?...
  7. duilib创建自定义控件
  8. 道一时间转换工具发布
  9. Understanding the Bias-Variance Tradeoff(深入理解偏差和方差)
  10. 一个企业有没有未来,无非取决于这八点