python-requests数据驱动延伸
在 python-requests模块的讲解和应用 基础上进行数据驱动的延伸
task_01_requests.py
#-*- coding:utf-8 -*-
#task_01_requests.py # 1:利用requests模块,编写一个可以完成http的get请求以及post请求的类。
# 2:利用登录和充值的两个数据,完成1中编写的类的单元测试(一条龙服务,包含测试报告) import requests
class HttpRequests():
def http_requests(self,url,params,http_mothed,cookies=None):
if http_mothed=='get':
res=requests.get(url,params,cookies=cookies)
return res
else:
res=requests.post(url,params,cookies=cookies)
return res
task_02_requests.py
#-*- coding:utf-8 -*-
#task_02_requests.py #存放测试用例
import unittest
from study_181130_request.task_01_requests import HttpRequests COOKIES=None class TestHttpRequests(unittest.TestCase): # login_data={'mobilephone':18688773467,'pwd':'123456'}
# login_data={'mobilephone':18688773467,'pwd':'1234567'}
def setUp(self):
# self.url='http://47.107.168.87:8080/futureloan/mvc/api/member/login'
pass
def __init__(self,url,param,http_method,excepted,methodName):#初始化传参;用初始化函数一定要记得去看看父类里面有没有初始化函数,如果有,需要超继承
self.param=param#请求的数据
self.http_method=http_method#请求方法
self.url=url
self.excepted=excepted
super(TestHttpRequests,self).__init__(methodName)#超继承 # def test_login(self):#登录成功 :手机号正确、密码正确;用例里面不可以传参数
def test_api(self):#登录成功 :手机号正确、密码正确;用例里面不可以传参数
global COOKIES#声明全局变量
res=HttpRequests().http_requests(self.url,self.param,self.http_method,COOKIES)
try:
self.assertEqual(self.excepted,res.json()['msg'])
except AssertionError as e:
print('断言结果是:{}'.format(e))
raise e if res.cookies:
COOKIES=res.cookies#当res.cookies非空时,修改COOKIES的值 # def test_error_pwd(self):#登录成功 :手机号正确、密码错误
#
# res=HttpRequests().http_requests(self.url,self.param,self.http_method)
# try:
# self.assertEqual('用户名或密码错误',res.json()['msg'])
# except AssertionError as e:
# print('断言结果是:{}'.format(e))
# raise e
#
# def test_recharge(self):#充值成功
# # recharge='http://47.107.168.87:8080/futureloan/mvc/api/member/recharge'
# # recharge_data={'mobilephone':18688773467,'amount':'1000'}
# expected='充值成功'
#
# res=HttpRequests().http_requests(recharge,recharge_data,'post',COOKIES)
# actual=res.json()['msg']
# self.assertEqual(expected,actual) # 数据驱动延伸--思路整理:
# 先把可以参数化的login放到setUp()函数里,赋值给self.url
# 再把请求数据login_data赋值给self.param和请求方法赋值给http_method放到初始化函数里;初始化函数不能直接重写,所以需要超继承
# 参数化后要记得把函数里的参数改为参数化后的参数
# task_03_requests.py中创建实例的方法来添加用例;然后里面传参
# 将login_data放到test_data列表中,然后利用for循环读取列表中的值,使suit.addTest()代码量减少
# 然后再将放到test_data列表优化,加入http_method,列表里面嵌套字典
# 添加充值的请求,此时url不能再放到setUp函数里面,可以放到test_data列表里面参数化
# test_api函数里面需要传入COOKIES参数,充值才能成功
# 断言里面的期望值进行参数化
task_03_requests.py
#-*- coding:utf-8 -*-
#task_03_requests.py import unittest
import HTMLTestRunnerNew
from study_181130_request.task_02_requests import TestHttpRequests
# login_data_01={'mobilephone':18688773467,'pwd':'123456'}
# login_data_02={'mobilephone':18688773467,'pwd':'1234567'} # test_data=[{'mobilephone':18688773467,'pwd':'123456'},{'mobilephone':18688773467,'pwd':'1234567'}]
test_data=[{'param':{'mobilephone':18688773467,'pwd':''},'http_method':'get','excepted':'登录成功',
'url':'http://47.107.168.87:8080/futureloan/mvc/api/member/login'}, {'param':{'mobilephone':18688773467,'pwd':''},'http_method':'post','excepted':'用户名或密码错误',
'url':'http://47.107.168.87:8080/futureloan/mvc/api/member/login'}, {'param':{'mobilephone':18688773467,'amount':''},'http_method':'post','excepted':'充值成功',
'url':'http://47.107.168.87:8080/futureloan/mvc/api/member/recharge'}] suit=unittest.TestSuite()##装用例的地方
for item in test_data:
suit.addTest(TestHttpRequests(item['url'],item['param'],item['http_method'],item['excepted'],'test_api'))#创建实例的方法来添加用例 # suit.addTest(TestHttpRequests(item,'get','test_login'))#创建实例的方法来添加用例
# suit.addTest(TestHttpRequests(login_data_02,'post','test_login')) # loader=unittest.TestLoader()
# suit.addTest(loader.loadTestsFromTestCase(TestHttpRequests))#通过loader从指定的测试类里面添加用例 #执行用例
with open('test_api.html','bw+') as file:
Runner=HTMLTestRunnerNew.HTMLTestRunner(stream=file,verbosity=2,
title='HTTP请求作业-单元测试报告',description='测试一下HTTP请求',tester='huimin'
)
Runner.run(suit)
测试报告
python-requests数据驱动延伸的更多相关文章
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)
可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...
- 基于Python Requests的数据驱动的HTTP接口测试
发表于:2017-8-30 11:56 作者:顾翔 来源:51Testing软件测试网原创 http://www.51testing.com/html/69/n-3720769-2.html ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- Python requests模拟登录
Python requests模拟登录 #!/usr/bin/env python # encoding: UTF-8 import json import requests # 跟urllib,ur ...
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...
- Python requests 安装与开发
Requests 是用Python语言编写HTTP客户端库,跟urllib.urllib2类似,基于 urllib,但比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求, ...
- Python+Requests接口测试教程(1):Fiddler抓包工具
本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...
- python requests库学习笔记(上)
尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...
- python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)
python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...
随机推荐
- mac home目录创建文件夹,修改权限
mac 是基于unix, 自带就有home目录,但是为空.home目录的默认所属用户是root wheel,mac默认的root账号所属用户是root admin,所以root也无法在home目录下创 ...
- 阅读<AXI4-Stream Infrastructure IP Suite v2.2>笔记
阅读<AXI4-Stream Infrastructure IP Suite v2.2>笔记 为了配合tpg和video_out IP核的使用,我们需要使用此组件中的AXI4-stream ...
- Python多版本共存virtualenv配置
virtualenv 前提是已经安装好了python.我的ubuntu是自带了python2.7和python3.6 安装vrtualenv sudo apt-get install python-v ...
- Winfrom控件使用
1.Lablelable添加图片,解决图片和字体重叠? Text属性添加足够空格即可,显示效果如下所示: 2.根据窗体名称获取窗体并显示到指定panel? Label item = sender as ...
- ALGO-125_蓝桥杯_算法训练_王、后传说(DFS)
问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...
- Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)
转载:好儿郎~志在四方 详细描述: QDockWidget类提供了一个窗体部件,其可以停靠在QMainWindow,或其本身作为一个在桌面上的顶级窗口(也就是父窗体). QDockWidget类提供了 ...
- http系列(一)
一.关于Url URI由URL和URN组成,URI即统一资源标识符,URL即统一资源定位符,URN即统一资源名称. 现在最常用的是URL. 二.http请求/响应报文 请求报文:请求行.请求头部.空行 ...
- dfs常见的配置文件中的value与description(重要)
不多说,直接上干货! name value description dfs.namenode.logging.level info The logging level for dfs namenode ...
- P1601高精度加法
传送门 虽然本题一本通上有,但是一本通不是万能的,这道题就漏掉了进位(所以这告诉我们加法进位很重要) 直接上修改后的题解 #include<iostream> #include<cs ...
- 微服务测试打桩/mock工具mountebank
1,安装 Linux安装包,不用安装Node.js https://s3.amazonaws.com/mountebank/v1.10/mountebank-v1.10.0-linux-x64.tar ...