python处理表格数据教程_python利用Excel读取和存储测试数据完成接口自动化教程...

http_request2.py用于发起http请求

#读取多条测试用例

#1、导入requests模块

import requests

#从 class_12_19.do_excel1导入read_data函数

from do_excel2 import read_data

from do_excel2 import write_data

from do_excel2 import count_case

#定义http请求函数

COOKIE=None

def http_request2(method,url,data):

if method=='get':

print('发起一个get请求')

result=requests.get(url,data,cookies=COOKIE)

else:

print('发起一个post请求')

result=requests.post(url,data,cookies=COOKIE)

return result #返回响应体

# return result.json() #返回响应结果:结果是字典类型:{'status': 1, 'code': '10001', 'data': None, 'msg': '登录成功'}

#从Excel读取到多条测试数据

sheets=['login','recharge','withdraw']

for sheet1 in sheets:

max_row=count_case(sheet1)

print(max_row)

for case_id in range(1,max_row):

data=read_data(sheet1,case_id)

print('读取到第{}条测试用例:'.format(data[0]))

print('测试数据 ',data)

#print(type(data[2]))

#调用函数发起http请求

result=http_request2(data[4],data[2],eval(data[3]))

print('响应结果为 ',result.json())

if result.cookies:

COOKIE=result.cookies

#将测试实际结果写入excel

#write_data(case_id+1,6,result['code'])

write_data(sheet1,case_id+1,7,str(result.json()))

#对比测试结果和期望结果

if result.json()['code']==str(data[5]):

print('测试通过')

#将用例执行结果写入Excel

write_data(sheet1,case_id+1,8,'Pass')

else:

write_data(sheet1,case_id+1,8,'Fail')

print('测试失败')

do_excel2.py完成对excel中用例的读、写、统计

# 导入load_workbook

from openpyxl import load_workbook

#读取测试数据

#将excel中每一条测试用例读取到一个列表中

#读取一条测试用例——写到一个函数中

def read_data(sheet_name,case_id):

# 打开excel

workbook1=load_workbook('test_case2.xlsx')

# 定位表单(test_data)

sheet1=workbook1[sheet_name]

print(sheet1)

test_case=[] #用来存储每一行数据,也就是一条测试用例

test_case.append(sheet1.cell(case_id+1,1).value)

test_case.append(sheet1.cell(case_id+1,2).value)

test_case.append(sheet1.cell(case_id+1,3).value)

test_case.append(sheet1.cell(case_id+1,4).value)

test_case.append(sheet1.cell(case_id+1,5).value)

test_case.append(sheet1.cell(case_id+1,6).value)

return test_case #将读取到的用例返回

#调用函数读取第1条测试用例,并将返回结果保存在data中

# data=read_data(1)

# print(data)

#将测试结果写会excel

def write_data(sheet_name,row,col,value):

workbook1=load_workbook('test_case2.xlsx')

sheet=workbook1[sheet_name]

sheet.cell(row,col).value=value

workbook1.save('test_case2.xlsx')

#统计测试用例的行数

def count_case(sheet_name):

workbook1=load_workbook('test_case2.xlsx')

sheet=workbook1[sheet_name]

max_row=sheet.max_row #统计测试用例的行数

return max_row

test_case2.xlsx存储测试用例

20200430110552.jpg

20200430110559.jpg

补充知识:python用unittest+HTMLTestRunner+csv的框架测试并生成测试报告

直接贴代码:

import csv # 导入scv库,可以读取csv文件

from selenium import webdriver

import unittest

from time import sleep

import time

import os

import HTMLTestRunner

import codecs

import sys

dr = webdriver.Chrome()

class testLo(unittest.TestCase):

def setUp(self):

pass

def test_login(self):

'''登陆测试'''

path = 'F:\\Python_test\\'

# 要读取的scv文件路径

my_file = 'F:\\pythonproject\\interfaceTest\\testFile\\ss.csv'

# csv.reader()读取csv文件,

# Python3.X用open,Python2.X用file,'r'为读取

# open(file,'r')中'r'为读取权限,w为写入,还有rb,wd等涉及到编码的读写属性

#data = csv.reader(codecs.open(my_file, 'r', encoding='UTF-8',errors= 'ignore'))

with codecs.open(my_file, 'r', encoding='UTF-8',errors= 'ignore') as f:

data=csv.reader((line.replace('\x00','') for line in f))

# for循环将读取到的csv文件的内容一行行循环,这里定义了user变量(可自定义)

# user[0]表示csv文件的第一列,user[1]表示第二列,user[N]表示第N列

# for循环有个缺点,就是一旦遇到错误,循环就停止,所以用try,except保证循环执行完

print(my_file)

for user in data:

print(user)

dr.get('https://passport.cnblogs.com/user/signin')

# dr.find_element_by_id('input1').clear()

dr.find_element_by_id('input1').send_keys(user[0])

# dr.find_element_by_id('input2').clear()

dr.find_element_by_id('input2').send_keys(user[1])

dr.find_element_by_id('signin').click()

sleep(1)

print('\n' + '测试项:' + user[2])

dr.get_screenshot_as_file(path + user[3] + ".jpg")

try:

assert dr.find_element_by_id(user[4]).text

try:

error_message = dr.find_element_by_id(user[4]).text

self.assertEqual(error_message, user[5])

print('提示信息正确!预期值与实际值一致:')

print('预期值:' + user[5])

print('实际值:' + error_message)

except:

print('提示信息错误!预期值与实际值不符:')

print('预期值:' + user[5])

print('实际值:' + error_message)

except:

print('提示信息类型错误,请确认元素名称是否正确!')

def tearDown(self):

dr.refresh()

# 关闭浏览器

dr.quit()

if __name__ == "__main__":

# 定义脚本标题,加u为了防止中文乱码

report_title = u'登陆模块测试报告'

# 定义脚本内容,加u为了防止中文乱码

desc = u'登陆模块测试报告详情:'

# 定义date为日期,time为时间

date = time.strftime("%Y%m%d")

time = time.strftime("%Y%m%d%H%M%S")

# 定义path为文件路径,目录级别,可根据实际情况自定义修改

path = 'F:\\Python_test\\' + date + "\\login\\" + time + "\\"

# 定义报告文件路径和名字,路径为前面定义的path,名字为report(可自定义),格式为.html

report_path = path + "report.html"

# 判断是否定义的路径目录存在,不能存在则创建

if not os.path.exists(path):

os.makedirs(path)

else:

pass

# 定义一个测试容器

testsuite = unittest.TestSuite()

# 将测试用例添加到容器

testsuite.addTest(testLo("test_login"))

# 将运行结果保存到report,名字为定义的路径和文件名,运行脚本

report = open(report_path, 'wb')

#with open(report_path, 'wb') as report:

runner = HTMLTestRunner.HTMLTestRunner(stream=report, title=report_title, description=desc)

runner.run(testsuite)

# 关闭report,脚本结束

report.close()

csv文件格式:

20200430110848.jpg

备注:

使用python处理中文csv文件,并让execl正确显示中文(避免乱码)设施编码格式为:utf_8_sig,示例:

'''''

将结果导出到result.csv中,以UTF_8 with BOM编码(微软产品能正确识别UTF_8 with BOM存储的中文文件)存储

'''

#data.to_csv('result_utf8_no_bom.csv',encoding='utf_8')#导出的结果不能别excel正确识别

data.to_csv('result_utf8_with_bom.csv',encoding='utf_8_sig')

以上这篇python利用Excel读取和存储测试数据完成接口自动化教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux递归参数-R(r)和-p的区别

在linux系统中创建、复制、删除目录或文件时,常常会用到递归参数。常用的递归参数有-p,-r,-P等。为方便初学者学习、分辨与记忆,将其分类整理如下。 一般常用到递归的命令有:mkdir、cp、rm、ls、grep、chmod、chown等。 而mv命令没有递归参…

html table设置行高_字号与行高

1. 什么是字号与行高什么是字号大小?字号大小就是字体的高度,例如设置字号为50px,那么它的高度如下图所示:什么是行距呢?如下图所示:其中半行距 (lineHeight – fontSize) / 2。但是实际上,fon…

linux 用户名为没有名字 报错:cannot find name for user ID

经过一系列用户权限更改后,切换到普通用户,失败,报错如下: 解决方案:这个问题是因为普通用户没有权限读取/etc/passwd和/etc/group文件造成,添加权限即可。 转载自:id: cannot find name for us…

xposed hook 静态函数_浅谈 Xposed 新概念【模块作用域】

众所周知,Xposed 是一个系统级别的软件框架,它与 Cydia Substrate 不同,Xposed 仅可 hook app_process 中的 java 函数,不过对于大部分的 Android 应用来说已经足够了;它所提供的 API 可以供模块开发者在不修改目标应用…

adc0808温度换算公式_温湿度传感器的三种模拟量换算关系

气候的变化常常会导致空气当中的湿度以及温度随之而产生相应的变化,如果想及时感知空气中温湿度的变化,那就需要温湿度传感器。在日常生活中,温湿度传感器种类有很多,按照数据上传方式分有RS485型温湿度传感器、模拟量型温湿度传感…

共阳数码管段码表_简单共阴极数码管电路图大全

共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。判断公阴极和公阳极找公共共阴和公共共…

linux find 报错路径必须在表达式之前

执行 find -name yum*,查看当前文件夹下以yum开头的文件。 报错路径必须在表达式之前,如下图所示: 解决方案: 会出现“find: 路径必须在表达式之前”的错误提示。解决的方法有两种 使用转义符把*转义,即 yum\*用引号引起来 &am…

css 动态生成圆形区域内扇形个数_CSS实用技巧总结

❝作者:幻灵尔依 (授权原创)https://juejin.im/post/5e0fef935188253a624a6a72❞《css揭秘》中讲了47个css技巧,其中有很多日常编码中并不会用到,本文除了将书中部分实用技巧罗列出来之外,还尝试用帮助读者搞明白background、anim…

python怎么返回上一行代码_一行Python代码能做出哪些神器的事情

原标题:一行Python代码能做出哪些神器的事情 (1)一行代码启动一个Web服务 python -m SimpleHTTPServer 8080 # python2 python3 -m http.server 8080 # python3 (2)一行代码实现变量值互换a, b 1, 2; a, b b, a &…

c++ string 字符_C/C++知识分享:C++标准库之 string 类型,各种运算全部掌握

简介:C标准库提供的类型:string。长度可变的字符串,操作简单仅为包含个人常用函数头文件string 类型与其它的标准库类型相同,都需要包含对应的头文件string 类型的定义和初始化string 类型的函数(1)字符串的赋值输入及…

为什么机油使用后变红_水泥固化剂的使用原理是什么,涂洒后时间为什么要足够长?...

水泥固化剂由于具有提高水磨地面的强度、硬度、使地面不起灰,抗压强度、抗腐蚀的能力,广泛应用于现代工厂、仓储、停车场、商场、超市的装饰材料。那么,水泥固化剂涂洒后时间为什么足够长呢?下面听听好牛环境科技的小编的意见吧&a…

CentOS虚拟机访问外部网络

这里写自定义目录标题虚拟机无网络测试解决方案1、设置VM(关闭虚拟机)2、查看当前IP、网关、子网掩码3、设置虚拟机IP、网卡、子网掩码虚拟机无网络测试 CentOS使用yum下载gcc时报错:cannot find a valid baseurl for repo:base/7/x86_64,百…

4x4矩阵键盘工作原理及扫描程序_基于复杂可编程逻辑器件实现键盘接口电路的设计...

1 引言无功补偿装置是用于补偿电网无功功率的不足,提高功率因数,保证供电系统安全运行和节约电能的设备,其核心是控制仪。本控制仪集无功补偿、电度量计量、电能质量监测及通信于一体,对电网参数进行实时采样与计算并把各项参数显…

python opencv轮廓检测_OpenCV 轮廓检测的实现方法

轮廓概述 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny…

4.3 媒资管理模块 - Minio系统上传图片与视频

文章目录 一、上传图片1.1 需求分析1.2 数据模型1.2.1 media_files 媒资信息表 1.3 准备Minio环境1.3.1 桶环境1.3.2 连接Minio参数1.3.3 Minio配置类 1.4 接口定义1.4.1 上传图片接口请求参数1.4.2 上传图片接口返回值1.4.3 接口代码 1.5 MediaFilesMapper1.6 MediaFileServic…

如何有效开展小组教学_如何有效地开展小组合作学习——数学科主题教研活动...

教学中如何有效地开展小组合作学习——数学科主题教研活动2019年2月20日下午第三节课,我校数学科组进行了由马少清老师主讲的小学数学课堂教学中如何有效地开展小组合作学习教研活动。活动中马老师从营造和谐的合作氛围、认真组织、明确要求、优选内容、及时指导总结…

linux命令-管理用户

目录 一、导入 1、基础 2、切换用户 二、用户与用户组基本信息 1、用户基本信息: /etc/passwd 2、用户密码信息: /etc/shadow 3、用户组配置信息: /etc/group 4、用户组密码信息: /etc/gshadow 三、管理用户 1、添加用户-useradd命…

springboot配置文件_SpringBoot系列干货:配置文件详解

在Spring Boot中,配置文件有两种不同的格式:1.一个是application.propertiesserver.port8888server.servlet.context-pathdemo2.另一个是application.ymlserver:port: 8888servlet:context-path: /demo配置文件与配置类的属性映射方式person:name: zhangsanage: 18实…

activemq 开启监听_SpringBoot集成ActiveMQ怎么实现Topic发布/订阅模式通信?

上一期我们讲了SpringBoot集成activeMQ实现Queue模式点对点通信,这一期我们接着讲SpringBoot集成activeMQ实现Topic发布/订阅模式通信。发布/订阅模式通信是对点对点通信模式的扩展。Queue模式下一个人发送的消息只能由一个人接收,而Topic模式下&#xf…

电脑右击新建没有Word、Excel怎么办

方法/步骤 1.点击开始,找到运行命令行,输入regedit,打开注册表。 2.在左侧找到HKEY_CLASSES_ROOT目录,并展开。 3.利用CTRL F 快捷键,查找“docx”的位置,当然这里也可以自己下拉查找。 4.找到.docx,不用展…