python自学1——代码优化1
优化了上次的代码,请求方式可接收get和post两种,代码中对两种方式做了判断。
测试结果中提取了测试用例的名称、请求返回的状态、请求的时间。
#coding:utf-8
import xlrd
import requests #下文中将用到的全局变量
nrows = 0
rdict = {} #存储请求参数
relist=[] #存储返回结果 #从excel中导入数据
def imptestcase(): fname = 'testcase.xlsx'
sheet_name='case1'
bk = xlrd.open_workbook(fname) try:
sheet = bk.sheet_by_name(sheet_name)
except:
print("no sheet in %s named sheet1" %fname) global nrows
nrows = sheet.nrows
ncols = sheet.ncols for i in range(0,ncols):
data = sheet.col_values(i)
global rdict
rdict[data[0]]=data[1:] #将excel读取的数据封装成请求,并发送 def sendpost():
#response = requests.post(url,json = data,headers = headers,verify=False)
for i in range(0,nrows-1):
url = rdict['url'][i] if rdict['headers'][i]!='':
headers = eval(rdict['headers'][i]) #str to dict
else:
headers = {} if rdict['json'][i]!='':
json = rdict['json'][i] #str to dict
else:
json = {} if rdict['params'][i]!='':
params = eval(rdict['params'][i]) #str to dict
else:
params = {} try:
if rdict['method']=='get':
r = requests.get(url,headers = headers,params = params,verify=False)
else:
r = requests.post(url,json = json,headers = headers,verify=False)
r.raise_for_status()
r.encoding=r.apparent_encoding
global relist
relist.append('Casename: '+rdict['casename'][i])
relist.append('Status: '+str(r.status_code))
relist.append('Date: '+r.headers['Date']) except Exception as e:
print(e)
print('fail')
relist.append(str(e)) #把返回的结果输出到html中,形成HTML报告(知识简单的展示,没有样式)
def output_html():
fout=open('output.html','w',encoding='UTF-8', newline='')
fout.write('<html>')
fout.write('<head>')
fout.write('<meta charset = "UTF-8"/>')
fout.write('</head>')
fout.write('<body>')
fout.write('<h1>report<h1>')
fout.write('<table>')
fout.write('<tr>')
#fout.write('<td>%s</td>' % relist)
for i in range(0,len(relist)):
fout.write('<td>%s</td>' % relist[i])
fout.write('</tr>')
fout.write('</table>')
fout.write('</body>')
fout.write('</html>')
fout.close() if __name__ == '__main__':
imptestcase()
sendpost()
output_html()
测试用例

测试结果

之后的计划:
1. 优化导入用例以及封装请求的代码
2. 优化测试结果,展示位更友好的页面
3. 由于这短时间学习的过程中使用的都是notepad来编写代码,随着代码量的增加,下一步考虑使用pycharm等IDE,便于管理。
题外话:
刚开始学习Python,代码写的太low,仅仅为了实现功能而已,博客园的各位大神请勿鄙视,希望能收到好的建议。
python自学1——代码优化1的更多相关文章
- python自学笔记
python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...
- Python - 自学django,上线一套资产管理系统
一.概述 终于把公司的资产管理网站写完,并通过测试,然后上线.期间包括看视频学习.自己写前后端代码,用时两个多月.现将一些体会记录下来,希望能帮到想学django做web开发的人.大牛可以不用看了,小 ...
- 拎壶冲冲冲专业砸各种培训机构饭碗篇----python自学(一)
本人一直从事运维工程师,热爱运维,所以从自学的角度站我还是以python运维为主. 一.python自学,当然少不了从hello world开始,话不多说,直接上手练习 1.这个可以学会 print( ...
- [Python自学] day-21 (2) (Cookie、FBV|CBV装饰器)
一.什么是Cookie 1.什么是Cookie? Cookie是保存在客户端浏览器中的文件,其中记录了服务器让浏览器记录的一些键值对(类似字典). 当Cookie中存在数据时,浏览器在访问网站时会读取 ...
- [Python自学] day-21 (1) (请求信息、html模板继承与导入、自定义模板函数、自定义分页)
一.路由映射的参数 1.映射的一般使用 在app/urls.py中,我们定义URL与视图函数之间的映射: from django.contrib import admin from django.ur ...
- [Python自学] day-20 (Django-ORM、Ajax)
一.外键跨表操作(一对多) 在 [Python自学] day-19 (2) (Django-ORM) 中,我们利用外键实现了一对多的表操作. 可以利用以下方式来获取外键指向表的数据: def orm_ ...
- [Python自学] day-19 (2) (Django-ORM)
一.ORM的分类 ORM一般分为两类: 1.DB first:先在DB中创建数据库.表结构,然后自动生成代码中的类.在后续操作中直接在代码中操作相应的类即可. 2.Code first:直接在代码中实 ...
- [Python自学] day-19 (1) (FBV和CBV、路由系统)
一.获取表单提交的数据 在 [Python自学] day-18 (2) (MTV架构.Django框架)中,我们使用过以下方式来获取表单数据: user = request.POST.get('use ...
- [Python自学] day-18 (2) (MTV架构、Django框架、模板语言)
一.实现一个简单的Web服务器 使用Python标准库提供的独立WSGI服务器来实现MVC架构. 首先,实现一个简单的Web服务器: from wsgiref.simple_server import ...
随机推荐
- web前端开发面试题(未完待续)
一.HTML与XHTML的不同:1)XHTML元素必须被正确地嵌套 2)元素必须被关闭 如:<h1>--</h1>关闭 3)标签名必须用小写字母 4)XHTML文档必须有根 ...
- vue.js中使用Axios
Axios为vue2.0官方推荐HTTP请求工具,之前的是vue-resource 在使用的过程中总结了两种使用方式: 1.和vue-resource使用类似 引入:import axios from ...
- wampserver集成包的配置
1.修改www/index.php 修改如下: $projectContents .= '<li><a href="'; ...
- VerilogHDL可综合设计的注意事项
可综合的语法已经记录得差不多了,剩下一些遗留的问题,在这里记录一下吧. 一.逻辑设计 (1)组合逻辑设计 下面是一些用Verilog进行组合逻辑设计时的一些注意事项: ①组合逻辑可以得到两种常用的RT ...
- 统一代码风格工具——editorConfig
前面的话 在团队开发中,统一的代码格式是必要的.但是不同开发人员的代码风格不同,代码编辑工具的默认格式也不相同,这样就造成代码的differ.而editorConfig可以帮助开发人员在不同的编辑器和 ...
- Redis-rdb持久化
Redis实现快照的过程 redis调用fork,现在有了子进程和父进程 父进程继续处理client请求,子进程负责将内存内容写入到临时文. 由于os的写时复制机制(copy on write)父子进 ...
- [js高手之路] es6系列教程 - 箭头函数详解
箭头函数是es6新增的非常有意思的特性,初次写起来,可能会觉得别扭,习惯之后,会发现很精简. 什么是箭头函数? 箭头函数是一种使用箭头( => )定义函数的新语法, 主要有以下特性: 不能通过n ...
- [补档]Password
Password 题目 Rivest是密码学专家.近日他正在研究一种数列E = {E[1],E[2],--,E[n]},且E[1] = E[2] = p(p为一个质数),E[i] = E[i-2]×E ...
- Vmware Tools 下载及安装方法
Vmware Tools 下载及安装方法 王尚2014.11.20 一.介绍 VMware Tools 是VMware 虚拟机中自带的一种增强工具,相当于 VirtualBox 中的增强功能(Sun ...
- matlab怎么查看已安装哪些工具箱和…
问题描述:matlab怎么查看已安装哪些工具箱和它们相应的版本 解决方法:在命令行里敲击der,回车 效果: