在 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数据驱动延伸的更多相关文章

  1. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  2. 基于Python Requests的数据驱动的HTTP接口测试

    发表于:2017-8-30 11:56  作者:顾翔   来源:51Testing软件测试网原创 http://www.51testing.com/html/69/n-3720769-2.html   ...

  3. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  4. Python requests模拟登录

    Python requests模拟登录 #!/usr/bin/env python # encoding: UTF-8 import json import requests # 跟urllib,ur ...

  5. 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。

    python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...

  6. Python requests 安装与开发

    Requests 是用Python语言编写HTTP客户端库,跟urllib.urllib2类似,基于 urllib,但比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求, ...

  7. Python+Requests接口测试教程(1):Fiddler抓包工具

    本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...

  8. python requests库学习笔记(上)

    尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...

  9. python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)

    python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...

随机推荐

  1. TCP加速锐速SS(ServerSpeeder)破解版一键安装

    速(serverspeeder),是一款TCP加速程序,能够增强VPS/服务器连接的稳定性,且有效的提高服务器的带宽利用率,进而提高访问速度.老左经常看到论坛.群里有用户提到锐速这款软件可以提高VPS ...

  2. Git-配置difftool和mergetool

    git自带的difftool和mergetool使用不习惯,配置difftool和mergetool为Beyond Compare 3. git的配置文件一般在C:\Users\用户名\.gitcon ...

  3. Quartz定时任务详解一

    以下是我在应用的的一个基本配置: #---------调度器属性---------------- org.quartz.scheduler.instanceName = TestScheduler o ...

  4. 基于selector的socket并发

    server: #!_*_coding:utf-8_*_ #__author__:"Alex huang" import selectors #selector模块集成了selec ...

  5. [置顶] Web用户的身份验证及WebApi权限验证流程的设计和实现 (不是Token驗證!!!不是Token驗證!!!都是基於用户身份的票据信息驗證!!!)

     转发 http://blog.csdn.net/besley/article/details/8516894 不是Token驗證!!!不是Token驗證!!!都是基於用户身份的票据信息驗證!!! [ ...

  6. WINDOWS和linux下stdcall

    __stdcall被这个关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall 的前面部分由ecx,edx传), 函数调用在返回前要由被调用者清理堆栈.这个关键字主要见于Micros ...

  7. webscoket通信初步(一)

    只要动手做起来,多投入时间和精力.耐心去研究,以大多人的智商加google,平时遇到的大部分问题我们都是可以自己解决的,大部分的知识我们都是可以掌握的. 我们都知道http协议是单向请求的,无法实现双 ...

  8. vue-router总结

    之前写过一篇关于vue-router的文章,主要是介绍怎么结合cli2在项目中使用vue-router,比较的简单,今天想结合cli3来总结一下vue-router的具体用法. cli3 在介绍vue ...

  9. erlang 安装

    [root@Aliyun software]# rpm -Uvh erlang-solutions-1.0.1.noarch.rpm [root@Aliyun software]# yum -y in ...

  10. 服务容错保护断路器Hystrix之一:入门示例介绍(springcloud引入Hystrix的两种方式)

    限流知识<高可用服务设计之二:Rate limiting 限流与降级> 在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的 ...