在 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 reselse: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 HttpRequestsCOOKIES=Noneclass 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'passdef __init__(self,url,param,http_method,excepted,methodName):#初始化传参;用初始化函数一定要记得去看看父类里面有没有初始化函数,如果有,需要超继承self.param=param#请求的数据self.http_method=http_method#请求方法self.url=urlself.excepted=exceptedsuper(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 eif 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.pyimport 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':'123456'},'http_method':'get','excepted':'登录成功','url':'http://47.107.168.87:8080/futureloan/mvc/api/member/login'},{'param':{'mobilephone':18688773467,'pwd':'1234567'},'http_method':'post','excepted':'用户名或密码错误','url':'http://47.107.168.87:8080/futureloan/mvc/api/member/login'},{'param':{'mobilephone':18688773467,'amount':'1000'},'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)

测试报告

转载于:https://www.cnblogs.com/Aphrodite/p/10083198.html

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 1 ...

  3. 案例驱动python编程入门-python ddt数据驱动实例代码分享

    python ddt数据驱动最简实例 在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写 ...

  4. 由浅入深----python+requests+unittest执行自动化接口测试

    由浅入深----python+requests+unittest执行自动化接口测试 一.安装requests.xlrd.json.unittest库 1.pip 命令安装: 2.pycharm里安装 ...

  5. 2022超级好用的接口自动化测试框架:基于python+requests+pytest+allure实现

    众所周知,目前市面上大部分的企业实施接口自动化最常用的有两种方式: 1.基于工具类的接口自动化,如: Postman+Newman+Jenkins+Git/svn Jmeter+Ant+Jenkins ...

  6. 接口自动化测试框架:python+requests+pytest+allure实现

    接口自动化测试框架 一.接口自动化测试框架需要解决的问题 二.接口自动化测试框架目录结构 三.日志监控文件的信息 四.搭建具有企业Logo的定制化报告.    今年是以往10年中最坏的一年,是未来10 ...

  7. 浅谈python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  8. python requests 爬取数据

    python requests 爬取数据 import requests from lxml import etree import time import pymysql import json h ...

  9. Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常

    Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常 参考文章: (1)Python requests 多线程抓取 出现H ...

最新文章

  1. Docker的使用(三:Docker Hub远程镜像管理)
  2. nslookup域名解析
  3. 关于卡巴斯基安全免疫区随笔
  4. python实现b树_B树及2-3树的python实现
  5. divcss布局模板代码_(带手机版数据同步)房产门户企业织梦模板 房地产楼盘网站源码下载...
  6. 一个sql引起的服务器性能下降
  7. ClickHouse留存分析工具十亿数据秒级查询方案
  8. NumPy学习_00 ndarray的创建
  9. VS2013下使用cjson
  10. 创建模态对话框和非模态对话框
  11. 调用外部 DLL 中的函数(显示调用)
  12. setInterval()与clearInterval()的用法
  13. 1次免费操作,为域名创建N个邮箱,项目批量注册必备干货
  14. 领导不待见这4种员工,能力再强也不会被重用,提前被辞退
  15. 身为一名Java程序员,在面试的时候常常被问到的,下面我总结一些常常别问到的问题。
  16. base64加密及方式
  17. cheng-06、初始化失败_Destroying singletons报错问题
  18. 北京遇上西雅图之不二情书
  19. 表单设计中标签的布局方式有哪些
  20. 国外大学老师用Prof.还是Dr.称呼?

热门文章

  1. this全面解析(二)
  2. node.js 初体验(转载)
  3. .NET调用控制台下生成的exe文件,传参及获取返回参数
  4. Attribute in C#
  5. CISA 称SolarWinds黑客或通过密码猜测攻陷目标,CISA 前局长受聘
  6. ZDI 公布多个尚未修复的 Windows 高危0day详情
  7. Flutter InkWell 动画浅析
  8. 能让程序员瞬间崩溃的五个瞬间,共鸣的同学请举手!
  9. 修改目录还原模式密码
  10. 从“No space left on device”到删除海量文件