在 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. #ifdef __cplusplus extern "C" { #endif 含义

    转载! 1.在好多程序中我们会遇到下面代码段 #ifdef __cplusplus         extern "C" {         #endif //c语法代码段 #if ...

  2. 【VSCode】Windows下VSCode编译调试c/c++【更新】

    便携版已更新,点此获取便携版 用于cpptools插件的配置文件更新 更新的launch.json // Available variables which can be used inside of ...

  3. VB (空字串)、Null、Empty、与 Nothing 的区别

    VB (空字串).Null.Empty.与 Nothing 的区别 http://blog.sina.com.cn/s/blog_3f39ffb50100bguw.html 变量 A.B.C.D 分别 ...

  4. Lucene suggest [转]

      The Big Data Zone is presented by Splunk, the maker of data analysis solutions such as Hunk, an an ...

  5. java高并发编程(二)

    马士兵java并发编程的代码,照抄过来,做个记录. 一.分析下面面试题 /** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容 ...

  6. vue-router总结

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

  7. flume http source示例讲解

    一.介绍 flume自带的Http Source可以通过Http Post接收事件. 场景:对于有些应用程序环境,它可能不能部署Flume SDK及其依赖项,或客户端代码倾向于通过HTTP而不是Flu ...

  8. 学习笔记之Introduction to Data Visualization with Python | DataCamp

    Introduction to Data Visualization with Python | DataCamp https://www.datacamp.com/courses/introduct ...

  9. Eureka与ZooKeeper 的比较(转)

    https://www.cnblogs.com/zgghb/p/6515062.html Eureka的优势 1.在Eureka平台中,如果某台服务器宕机,Eureka不会有类似于ZooKeeper的 ...

  10. docker之小记一

    PaaS上build新版本的基础组件的镜像总是失败,提示也不是很明确.突然想起来,镜像的依赖关系做过变更,可能是缺少基础镜像的原因. 由于没有统一的仓库或者只是我还不知道,就从制品库下载对应的镜像,然 ...