python自学1——代码优化2

把接口测试的代码分别封装到了不同的模块中,只是简单的写入了类,类和属性等的使用还在学习中。
impTestcase.py

 1 #coding:utf-8
 2 import xlrd
 3 """import testcase from excel"""
 4 class impTestcase(object):
 5
 6     def __init__(self):
 7         pass
 8
 9     def importcase(self):
10         nrows = 0
11         rdict = {} #存储请求参数
12         returnres = {}
13         fname = ‘testcase.xlsx‘
14         sheet_name=‘case1‘
15         bk = xlrd.open_workbook(fname)
16         try:
17             sheet = bk.sheet_by_name(sheet_name)
18         except:
19             print("no sheet in %s named sheet1" %fname)
20
21         nrows = sheet.nrows
22         ncols = sheet.ncols
23         for i in range(0,ncols):
24             data = sheet.col_values(i)
25             rdict[data[0]]=data[1:]
26
27         returnres[‘nrows‘]=nrows
28         returnres[‘rdict‘]=rdict
29         return returnres

sendreq.py

#coding:utf-8
import requests
from impTestcase import impTestcase
"""send requests
response = requests.post(url,json = data,headers = headers,verify=False) """
class sendreq(object):

    def __init__(self,nrows,rdict):
        self.nrows = nrows
        self.rdict = rdict

    def sendrequest(self):
        relist = []
        for i in range(0,self.nrows-1):
            url = self.rdict[‘url‘][i]    

            if self.rdict[‘headers‘][i]!=‘‘:
                headers = eval(self.rdict[‘headers‘][i]) #str to dict
            else:
                headers = {}

            if self.rdict[‘json‘][i]!=‘‘:
                json = self.rdict[‘json‘][i] #str to dict
            else:
                json = {}

            if self.rdict[‘params‘][i]!=‘‘:
                params = eval(self.rdict[‘params‘][i]) #str to dict
            else:
                params = {}

            try:
                if self.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

                relist.append(‘Casename: ‘+self.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))
        return relist

outputResult.py

#coding:utf-8
from sendreq import sendreq
"""xxx"""
class outputResult(object):

    def __init__(self,relist):
        self.relist = relist

    def output(self):
        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(self.relist)):
            fout.write(‘<td>%s</td>‘ % self.relist[i])
        fout.write(‘</tr>‘)
        fout.write(‘</table>‘)
        fout.write(‘</body>‘)
        fout.write(‘</html>‘)
        fout.close()

main.py

#coding:utf-8
from impTestcase import impTestcase
from sendreq import sendreq
from outputResult import outputResult

def mainRun():

    tc = impTestcase()
    re = tc.importcase()
    send = sendreq(re[‘nrows‘],re[‘rdict‘]).sendrequest()
    print(send)
    out = outputResult(send)
    out.output()

mainRun()

下一步的计划是:
1. 学习模块、类、实例等OOP的知识;

2. 运用所学知识进一步优化代码;

3. 使用pycharm编写和管理代码。

时间: 2024-10-08 09:48:13

python自学1——代码优化2的相关文章

python自学1——代码优化1

优化了上次的代码,请求方式可接收get和post两种,代码中对两种方式做了判断. 测试结果中提取了测试用例的名称.请求返回的状态.请求的时间. 1 #coding:utf-8 2 import xlrd 3 import requests 4 5 #下文中将用到的全局变量 6 nrows = 0 7 rdict = {} #存储请求参数 8 relist=[] #存储返回结果 9 10 #从excel中导入数据 11 def imptestcase(): 12 13 fname = 'testc

python自学笔记

python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 循环 6.使用dict和set 6.1 dict 6.2 set 7.函数的使用 7.1函数返回多个值,同时接受多个值 7.2函数参数的默认值 7.3可变参数的函数 7.4可变个数带参数名的入参 7.5参数类型组合 8.关于函数递归 9.python的高级特性 9.1切片 9.2遍历 9.3列表生

Python - 自学django,上线一套资产管理系统

一.概述 终于把公司的资产管理网站写完,并通过测试,然后上线.期间包括看视频学习.自己写前后端代码,用时两个多月.现将一些体会记录下来,希望能帮到想学django做web开发的人.大牛可以不用看了,小白的第一个项目,写的很low,不入眼. 二.过程 1. python自学断断续续都有好长的时间,总是零零散散,没有去完完全全开发一个项目出来,跟别人说我会python,都没有啥说服力.后来下定决心,用python去做一个网站出来.正好公司平常维护资产的时候使用的是excel表,十分不科学.领导有意思

[Python自学] 项目发布流程

一.上线准备工作 1.准备Python虚拟环境:[Linux系统] CentOS7创建Python虚拟环境 2.安装Python依赖:[Python自学] 批量安装依赖 3.部署MariaDB:[数据库] MariaDB安装及使用 4.部署Redis集群:[NoSQL数据库] Redis集群部署 5.使用uWSGI运行项目:[Python自学] uWSGI启动django项目 5.部署Nginx:[Linux系统] (8)Nginx 6.使用LVS(可选):[Linux系统] (6)LVS负载均

Python 自学不求人

自学 Python 不求人,本文介绍 Python 自学时如何获取免费权威的帮助信息. 概述 如何使用 Python 自带的 help() 方法 如何利用 Python 文档 获取中文文档 获取帮助 help 每次进入 python 解释器的交互模式时,都会先打印横幅消息,在版本信息下面就是推荐 的命令: Type "help", "copyright", "credits" or "license" for more inf

Python 自学感想

将近三十岁的我回想了一下以前的种种......感到一种莫名伤感与无奈.伤感是因为:将近三十的我还是一事无成,身无分文,浪费太多的时间在一些无用的东西上面(比如:游戏).无奈是因为:只能眼睁睁的看着时间随风飘逝,而没有任何办法留住它,任它腐蚀着我的身心. 向前面的路望了望,只看到了无尽的深渊与绝望.我看不到以后的路,找寻不到一点希望.还是玩游戏吧,至少玩的时候心里不会想到这些烦心事,但是玩过之后,又是一阵无尽的空虚与伤感.于是删了游戏,(删了装,装了又删,自已都不记得重复了多少次了)强硬着逼自己再

Python 自学笔记(一)环境搭建

一,关于Python的介绍 关于Python的介绍,我不想多说了,网上随便一搜,很多介绍,这里我主要写下我的自学Python的 过程,也是为了促进我能继续学习下去. 二,环境搭建 1,这里我只讲解Windows,因为我比较喜欢Linux,但是windows 还是必须要用的,所以对linux不是经常用(我不是职业程序猿,只是个业余爱好者),不过这都是很简单的,不论哪个平台,都无所谓了 2,下载Python ,https://www.python.org/downloads/windows/ 选择你

python自学笔记(一)

我没学过python,通过网上和一些图书资料,自学并且记下笔记. 很多细节留作以后自己做项目时再研究,这样能更高效一些. python基础自学笔记 一.基本输入和输出 pthon3.0用input提示用户输入,用print提示用户输出,格式为print("...") 如果格式化输出,那么格式为print("%d" %(变量名)), %d可以替换为%s等其他格式符, 以后用到什么格式自己查,这样学起来高效. 简单的例子: #-*-coding:utf-8-*- nam

Python自学之乐-多继承顺序问题

最近自学Python到面向对象这里,感觉有必要把多继承这里好好理解一下,下面是我自己的一点小总结,如果有朋友觉得有什么不足的,还望不吝赐教! 1.#Author:clark class Animal(object):#动物类 #kind = "" def __init__(self,name,age,food): self.Name = name self.Age = age self.food = food def eat(self): print("%s is eat %