注意充值时候,cookie的处理方法,还是原来的三种方法

1.操作数据文件  do_exclel.py

 # -*- conding:utr-8 -*-
#@Time :2018/11/8 22:46
#@Author:GYP测试
#@File :do-excel.py
from openpyxl import load_workbook class Read_data:
def __init__(self,file_name,sheet_name):
self.file_name=file_name
self.sheet_name=sheet_name
#读取头消息
def get_header(self):
wb=load_workbook(self.file_name)
sheet=wb[self.sheet_name]
header=[]
for i in range(1,sheet.max_column+1):
header.append(sheet.cell(1,i).value)
return header
#读取Excel中的测试数据
def read_data(self):
wb = load_workbook(self.file_name)
sheet = wb[self.sheet_name]
header=self.get_header()
read_test_data=[]
for i in range(2,sheet.max_row+1):
sub_data={}
for j in range(1,sheet.max_column):
sub_data[header[j-1]]=sheet.cell(i,j).value
read_test_data.append(sub_data)
return read_test_data
#测试结果写入Excel中
class write_data:
def __init__(self,file_name,sheet_name,value):
self.file_name=file_name
self.sheet_name=sheet_name
self.value=value
def write_data(self):
wb = load_workbook(self.file_name)
sheet = wb[self.sheet_name]
# for i in range(len(self.value)):
for rownum in range(2,sheet.max_row+1):
# print(rownum)
sheet.cell(rownum,sheet.max_column).value = self.value[rownum-2]
wb.save(self.file_name)
if __name__ == '__main__':
# res1 = Read_data('E:\\test\API_AUTO\\test_data\data.xlsx','login').read_data()
# print(res1)
data=['a','b','c',1,2]
res2= write_data('D:\\autou_testing\API_AUTO\\test_data\data.xlsx','login',data).write_data()

2.http请求的写法

 # -*- conding:utr-8 -*-
#@Time :2018/11/8 21:56
#@Author:GYP测试
#@File :requests_testing.py
import requests
class requests_test:
def test_api(self,http_method,url,data,cookie=None):
if http_method=='post':
res=requests.post(url,data,cookies=cookie)
else:
res=requests.get(url,data,cookies=cookie)
return res
if __name__ == '__main__':
url_login = 'http://119.23.241.154:8080/futureloan/mvc/api/member/login'
url_recharge = 'http://119.23.241.154:8080/futureloan/mvc/api/member/recharge'
login_data = {"mobilephone": "", "pwd": ""}
recharge_data = {"mobilephone": "", "amount": ""}
# 登录
res = requests_test().test_api('post',url_login,login_data)
print("登录结果是:", res.json())
# 充值
recharge_res = requests_test().test_api('get', url_recharge, recharge_data, res.cookies)
print("充值结果是:", recharge_res.json())

3.通过run文件,运行,后在excel中查看测试结果

run.py

 # -*- conding:utf-8 -*-
#@Time :2018/11/9 10:07
#@Author:GYP测试
#@File :run.py from tools.do_excel import write_data,Read_data
from tools.http_requests1 import requests_test cookie=None
def run(sheet_name):
global cookie
res1=Read_data('D:\\autou_testing\API_AUTO\\test_data\data.xlsx',sheet_name).read_data()
test_data=[]
for item in res1:
res = requests_test().test_api(item['http_menod'],item['url'],eval(item['data']),cookie)
if res.cookies:
cookie=res.cookies
test_data.append(res.json()['code'])
#写入预期结果
write_data('D:\\autou_testing\API_AUTO\\test_data\data.xlsx',sheet_name,test_data).write_data()
#注册接口
run('register')
#登陆接口
run('login')
#充值接口
run('recharge')

今天新内容:

1.requests.ssesion,,会话中的用法

a.登陆请求后,其他接口不用带cookie的

b.get和post请求,只有一个参数,其他的关键字参数,请看结合视频查看源码

2.大数据处理的模块pandas使用的介绍,详细情况下面链接博客

https://www.cnblogs.com/liulinghua90/p/9935642.html

不用框架,原生使用python做注册接口/登陆接口/充值接口的测试,做的数据/代码分离的更多相关文章

  1. python - 接口自动化测试 - TestRecharge - 充值接口测试用例

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: test_recharge.py @ide: PyChar ...

  2. Python之注册表增删改查(干货)

    在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...

  3. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  4. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

  5. 哪些产品不用开发原生APP,微信公众号就够了?

    最近一阶段H5技术被推到高峰,很多人认为借助H5就能利用微信公众号取代APP原生应用了,而事实是怎么样的?这里我从产品层做一个客观分析. 一,原生APP总体趋势 要谈APP是否会被微信取代,那么必须回 ...

  6. Dora.Interception, 一个为.NET Core度身打造的AOP框架[3]:Interceptor的注册

    在<不一样的Interceptor>中我们着重介绍了Dora.Interception中最为核心的对象Interceptor,以及定义Interceptor类型的一些约定.由于Interc ...

  7. python之路----继承的抽象类和接口类

    抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数 ...

  8. Dubbo框架介绍与安装 Dubbo 注册中心(Zookeeper-3.4.6)

    背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. • 单一应用架构 • 当网站流量很小时, ...

  9. ASP.NET CORE 学习之原生DI实现批量注册

    以前使用Autofac的时候,只需一句AsImplementInterfaces()就可以很轻松实现批量注册功能.而asp.net core内置的DI框架没有现成的批量注册方法,考虑到替换Autofa ...

随机推荐

  1. .NET常用开发框架汇总

    分布式缓存框架:Microsoft Velocity:微软自家分布式缓存服务框架.Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度.Redis:是一个高性能的KV数据 ...

  2. Linux(Centos)设置ip

    一.Linux(Centos7)安装完毕后,重启电脑后,输入用户名(root),密码(**********). 在命令行中输入nmtui命令.选择Edit a connection,选择对应的链接端口 ...

  3. http升级https的时候,遇到一个问题

    问题: Mixed Content: The page at 'https://api.xxxx.com/test' was loaded over HTTPS, but requested an i ...

  4. JS中JSON和string字符串相互转换

    在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...

  5. luogu P5305 [GXOI/GZOI2019]旧词

    传送门 先考虑\(k=1\),一个点的深度就是到根节点的路径上的点的个数,所以\(lca(x,y)\)的深度就是\(x\)和\(y\)到根路径的交集路径上的点的个数,那么对于一个询问,我们可以对每个点 ...

  6. 关于HashMap put元素的原理

    HashMap集合put元素的原理:(1)计算key的hashCode(2)将key的hashCode作为计算因子,通过哈希算法计算HashMap的数组下标index(3)如果index下标的数组元素 ...

  7. Codeforces Round #541 (Div. 2)题解

    不知道该更些什么 随便写点东西吧 https://codeforces.com/contest/1131 ABC 太热了不写了 D 把相等的用并查集缩在一起 如果$ x<y$则从$ x$往$y$ ...

  8. Leetcode#500. Keyboard Row(键盘行)

    题目描述 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词.键盘如下图所示. 示例1: 输入: ["Hello", "Alaska", &quo ...

  9. Flask-Web开发(第一部分)

    1.Jinja2变量过滤器: safe 渲染值时不转义capitalize 把值的首字母转换成大写,其他字母转换成小写lower 把值转换成小写形式upper 把值转换成大写形式title 把值中每个 ...

  10. web前端效率提升之禁用缓存-遁地龙卷风

    1.使用场景 我用的是Chrome,Ctrl+F5并不是在任何时候都能清楚缓存,这样很影响效率,下面的方式可以在开发者工具打开的使用禁止浏览器缓存任何资源, 还是出现不及时更新的情况,就要考虑服务器是 ...