一、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数据驱动框架的更多相关文章

  1. python接口自动化之用HTMLTestRunner生成html测试报告

    [第一步]:引入HTMLTestRunner包 1.下载HTMLTestRunner,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html ...

  2. 【python接口自动化】- DDT数据驱动测试

    简单介绍 ​ DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...

  3. 【python接口自动化-requests库】【三】优化重构requests方法

    一.重构post请求方法 上一张讲了如何使用requests库发送post请求,但是有时候,我们写脚本,不可能这么简单,代码完全不可复用,重复工作,那我们是不是可以想象,把我们的get,post请求, ...

  4. 【python接口自动化-requests库】【二】requests库简单使用(入门)

    一.post请求 前面讲了,我们get请求的时候,引入requests的包,然后直接使用get方法,那么post是不是一样的? 1.首先我们先引入requests import requests 2. ...

  5. 【python接口自动化-requests库】【一】requests库安装

    1.概念 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满 ...

  6. Python接口自动化--requests 2

    # _*_ encoding:utf-8 _*_ import json import requests #post请求 payload = {"cindy":"hell ...

  7. Python接口自动化--requests 1

    # _*_ encoding:utf-8 _*_ import requests #请求博客园首页,无参数的get请求 r = requests.get('http://www.cnblogs.com ...

  8. python接口自动化28-requests-html爬虫框架

    前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...

  9. python接口自动化24-有token的接口项目使用unittest框架设计

    获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...

随机推荐

  1. 【转】sysctl命令及改变net.ipv4.ip_forward = 1方法

    转自:https://blog.csdn.net/michaelzhou224/article/details/16979285 sysctl配置与显示在/proc/sys目录中的内核参数.可以用sy ...

  2. Redis 实战之主从复制、高可用、分布式

      目录 简介 持久化 主从复制 高可用 Redis-Sentinel .NET Core开发 分布式 Redis-Cluster 配置说明 常见问题 简介 本节内容基于 CentOS 7.4.170 ...

  3. ZROI 19.08.01 生成函数方法

    写在前面:由于我数学基础不好,加上缺乏生成函数知识,所以这一下午我都处在掉线和非掉线的叠加态.而且我写\(\LaTeX\)很慢,所以笔记相当混乱而且不全面.说白了就是我太菜了听不懂. 1.一般生成函数 ...

  4. vue 无缝滚动文字

    前言 用vue做无缝滚动,字体弹幕 就上代码吧 <head> <meta charset="UTF-8"> <style> div, ul, l ...

  5. 跨平台信息获取小工具第三版本(增加了继承、多线程、异常处理模块、excel表格内容剔除空格)

    # coding=utf-8 import threadingimport paramikoimport osimport timeimport xlrdimport xlwtimport openp ...

  6. Fortran代码生成so库

    例: ifort -c -fpic test.f90ifort -shared -o test.so test.o

  7. 解析binlog生成MySQL回滚脚本

    如果数据库误操作想恢复数据.可以试试下面这个脚本.前提是执行DML操作. #!/bin/env python #coding:utf-8 #Author: Hogan #Descript : 解析bi ...

  8. python 使用嵌套函数报local variable xxx referenced before assignment或者 local variable XXX defined in enclosing scope

    情况一: a 直接引用外部的,正常运行 def toplevel(): a = 5 def nested(): print(a + 2) # theres no local variable a so ...

  9. js 数组 splice 函数 多线程

    <script type="text/javascript"> var arr = new Array(6) arr[0] = "00" arr[1 ...

  10. Mysql 连接路径 url 参数解析

    1.mysql - url 参数解析 url:jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=utf8 u ...