python接口自动化:requests+ddt+htmltestrunner数据驱动框架
一、xc_datas:存放数据,xc_report:存放生成的报告,xc_tools:存放一些工具,get_api.py为执行程序

二、执行程序的实现代码如下:
#无token情况下,只支持get、post请求
import unittest
from HTMLTestRunner import HTMLTestRunner
from ddt import ddt,data
from xctest_api.xc_tools.get_CutString import *
from xctest_api.xc_tools.get_ReadExcel import *
import requests
import time @ddt
class get_apitest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('测试开始')
cls.s=requests.session()
@classmethod
def tearDownClass(cls):
print('测试结束')
def test_login(self):
lo=ReadExcel().read_excel('./xc_datas/login_data.xlsx')
if lo[3] == 'post':
result = self.s.post(lo[2], get_string().cut_string(lo[5]))
self.assert_login(lo[8],result.text)
elif lo[3]=='get':
result = self.s.get(lo[2])
self.assert_login(lo[8], result.text)
else:
print('暂无此请求类型方法')
@data(*ReadExcel().read_excel('./xc_datas/api_data.xlsx'))
def test_start(self, li):
if li[3] == 'post':
self.post_requests(li[4],li)
elif li[3] == 'get':
result = self.s.get(li[2])
self.assertIn(li[8], result.text)
else:
print('暂无此请求类型方法')
def assert_login(self,a,b):
if a in b.text:
print('登录成功')
else:
print('登录失败') def post_requests(self,c,li):
if c == 'application/x-www-form-urlencode':
result = self.s.post(li[2], get_string().cut_string(li[5]))
self.assertIn(li[8], result.text)
elif c == 'application/json':
result = self.s.post(li[2], json=get_string().cut_string(li[5]))
self.assertIn(li[8], result.text)
elif c == 'text/xml':
result = self.s.post(li[2], get_string().cut_string(li[5]).encode('utf-8'))
self.assertIn(li[8], result.text)
elif c == 'multipart/form-data':
if li[6]=='':
result = self.s.post(li[2],get_string().cut_string(li[5]))
self.assertIn(li[8], result.text)
else:
result = self.s.post(li[2], get_string().cut_string(li[5]),files=li[6])
self.assertIn(li[8], result.text)
else:
print('暂无此数据类型方法') if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(get_apitest))
name=time.strftime('%Y%m%d%H%M%S')
f = open('./xc_report/%d.html'%name, 'wb')
r = HTMLTestRunner(stream=f, title=u'EMS1.5', description=u'测试报告')
r.run(suite)
f.close()
python接口自动化:requests+ddt+htmltestrunner数据驱动框架的更多相关文章
- python接口自动化之用HTMLTestRunner生成html测试报告
[第一步]:引入HTMLTestRunner包 1.下载HTMLTestRunner,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html ...
- 【python接口自动化】- DDT数据驱动测试
简单介绍 DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...
- 【python接口自动化-requests库】【三】优化重构requests方法
一.重构post请求方法 上一张讲了如何使用requests库发送post请求,但是有时候,我们写脚本,不可能这么简单,代码完全不可复用,重复工作,那我们是不是可以想象,把我们的get,post请求, ...
- 【python接口自动化-requests库】【二】requests库简单使用(入门)
一.post请求 前面讲了,我们get请求的时候,引入requests的包,然后直接使用get方法,那么post是不是一样的? 1.首先我们先引入requests import requests 2. ...
- 【python接口自动化-requests库】【一】requests库安装
1.概念 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满 ...
- Python接口自动化--requests 2
# _*_ encoding:utf-8 _*_ import json import requests #post请求 payload = {"cindy":"hell ...
- Python接口自动化--requests 1
# _*_ encoding:utf-8 _*_ import requests #请求博客园首页,无参数的get请求 r = requests.get('http://www.cnblogs.com ...
- python接口自动化28-requests-html爬虫框架
前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...
- python接口自动化24-有token的接口项目使用unittest框架设计
获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...
随机推荐
- AI换脸教程:DeepFaceLab使用教程(2.训练及合成)
如果前期工作已经准备完毕(DeepFaceLab下载(https://www.deepfacelabs.com/list-5-1.html),然后安装相应的显卡驱动,DeepFaceLab使用教程(1 ...
- 使用命令在navicat中创建数据库和用户
一.用高权限账号登录,即创建连接 二.选择高权限用户右键,调出命令窗口 三.使用sql语句创建数据库 create database 数据库名 DEFAULT CHARACTER SET gbk CO ...
- Python 运算符Ⅳ
Python比较运算符 以下假设变量a为10,变量b为20: 以下实例演示了Python所有http://www.xuanhe.net/比较运算符的操作: 以上实例输出结果: Python赋值运算符 ...
- Vue的编译过程
碰到是否有template选项时,会询问是否要对template进行编译: 在template编译(渲染成UI)有一个过程.模板通过编译生成AST,再由AST生成Vue的渲染函数,渲染函数结合数据 ...
- 14.django返回展示一张图片
urlpatterns = [ path('admin/', admin.site.urls), # 使用django返回一张土图片的时候需要间接的访问一个中间接口,是html页面的中的img的src ...
- 10.django的一些方法理解
django get_object_or_404 get_object_or_404是django的django shortcuts的方法,用来查询数据,或者抛出一个DoesNotExist的异常 用 ...
- jquery contains选择器 语法
jquery contains选择器 语法 作用::contains 选择器选取包含指定字符串的元素.该字符串可以是直接包含在元素中的文本,或者被包含于子元素中.经常与其他元素/选择器一起使用,来选择 ...
- 文件操作:rewind()
函数名: rewind() 功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头 注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动 ...
- [luogu]P3959 宝藏[NOIP][状态压缩DP]
[luogu]P3959 宝藏[TREASURE] 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的 ...
- Android使用SDKManager下载SDK速度慢 容易丢包和异常的解决办法
第一步, SDK Manager启动之后,会先解析一些google的xml文件,会在Log里面打印出一些日志信息. 解析完之后,把日志全部拷贝到一个记事本里(这一步是因为日志窗口不支持查找),在里面查 ...