一、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. event对象中offsetX,clientX,pageX,screenX的区别

    1.offsetXoffset意为偏移量,是事件对象距左上角为参考原点的距离.以元素盒子模型的内容区域的左上角为参考点.不包括border.2.clientX事件对象相对于浏览器窗口可视区域的X,Y坐 ...

  2. Softmax函数与交叉熵

    在Logistic regression二分类问题中,我们可以使用sigmoid函数将输入Wx+b映射到(0,1)区间中,从而得到属于某个类别的概率.将这个问题进行泛化,推广到多分类问题中,我们可以使 ...

  3. 美团点评SQL优化工具SQLAdvisor开源快捷部署

    美团点评SQL优化工具SQLAdvisor开源快捷部署 git clone https://github.com/Meituan-Dianping/SQLAdvisor.gityum install ...

  4. jmeter使用jdbc获取注册验证码进行注册

    自动化工具测试注册功能时,往往会遇到验证码,这个烦人的验证码怎么能够解决掉呢? 通常有两种方法 让开发禁用注册码,或在测试环境写个固定的验证码 在jmeter中用 jdbc获取数据库中验证码 今天通过 ...

  5. shell练习--关于二维数组的实现问题

    关于二维数组的实现问题:通过查询网友们的记录,可知有两个方法 方法1:通过通过2次读取赋值,来获取二维数组的方法. a=('1 2 3' '4 5 6' '7 8 9') for i in " ...

  6. css @keyframes属性 语法

    css @keyframes属性 语法 @keyframes是什么?直线电机生产厂家 @keyframes是CSS的一种规则,可以用来定义CSS动画的一个周期的行为,创建简单的动画. 作用:通过 @k ...

  7. DevExpress.XtraGrid.Views.Grid.GridView

    private void SetView() { GridView gridView = (GridView)this.DefaultView; if (gridView != null) { gri ...

  8. Html5大文件断点续传实现方法

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  9. nowcoder 79F 小H和圣诞树 换根 DP + 根号分治

    设节点个数大于 $\sqrt n$ 的颜色为关键颜色,那么可以证明关键颜色最多有 $\sqrt n$ 个.对于每个关键颜色,暴力预处理出该颜色到查询中另一个颜色的距离和. 对于不是关键颜色的询问,直接 ...

  10. NOIP2016考前做题(口胡)记录

    NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...