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 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数据驱动延伸相关推荐
- 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 1 ...
- 案例驱动python编程入门-python ddt数据驱动实例代码分享
python ddt数据驱动最简实例 在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写 ...
- 由浅入深----python+requests+unittest执行自动化接口测试
由浅入深----python+requests+unittest执行自动化接口测试 一.安装requests.xlrd.json.unittest库 1.pip 命令安装: 2.pycharm里安装 ...
- 2022超级好用的接口自动化测试框架:基于python+requests+pytest+allure实现
众所周知,目前市面上大部分的企业实施接口自动化最常用的有两种方式: 1.基于工具类的接口自动化,如: Postman+Newman+Jenkins+Git/svn Jmeter+Ant+Jenkins ...
- 接口自动化测试框架:python+requests+pytest+allure实现
接口自动化测试框架 一.接口自动化测试框架需要解决的问题 二.接口自动化测试框架目录结构 三.日志监控文件的信息 四.搭建具有企业Logo的定制化报告. 今年是以往10年中最坏的一年,是未来10 ...
- 浅谈python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- python requests 爬取数据
python requests 爬取数据 import requests from lxml import etree import time import pymysql import json h ...
- Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常
Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常 参考文章: (1)Python requests 多线程抓取 出现H ...
最新文章
- Docker的使用(三:Docker Hub远程镜像管理)
- nslookup域名解析
- 关于卡巴斯基安全免疫区随笔
- python实现b树_B树及2-3树的python实现
- divcss布局模板代码_(带手机版数据同步)房产门户企业织梦模板 房地产楼盘网站源码下载...
- 一个sql引起的服务器性能下降
- ClickHouse留存分析工具十亿数据秒级查询方案
- NumPy学习_00 ndarray的创建
- VS2013下使用cjson
- 创建模态对话框和非模态对话框
- 调用外部 DLL 中的函数(显示调用)
- setInterval()与clearInterval()的用法
- 1次免费操作,为域名创建N个邮箱,项目批量注册必备干货
- 领导不待见这4种员工,能力再强也不会被重用,提前被辞退
- 身为一名Java程序员,在面试的时候常常被问到的,下面我总结一些常常别问到的问题。
- base64加密及方式
- cheng-06、初始化失败_Destroying singletons报错问题
- 北京遇上西雅图之不二情书
- 表单设计中标签的布局方式有哪些
- 国外大学老师用Prof.还是Dr.称呼?