python自学1——代码优化1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = testcase.xlsx
14     sheet_name=case1
15     bk = xlrd.open_workbook(fname)
16 
17     try:
18         sheet = bk.sheet_by_name(sheet_name)
19     except:
20         print("no sheet in %s named sheet1" %fname)
21 
22     global nrows
23     nrows = sheet.nrows
24     ncols = sheet.ncols
25 
26     for i in range(0,ncols): 
27         data = sheet.col_values(i) 
28         global rdict
29         rdict[data[0]]=data[1:]
30 
31 
32 #将excel读取的数据封装成请求,并发送
33 
34 def sendpost():
35     #response = requests.post(url,json = data,headers = headers,verify=False) 
36     for i in range(0,nrows-1):
37         url = rdict[url][i]    
38 
39         if rdict[headers][i]!=‘‘:
40             headers = eval(rdict[headers][i]) #str to dict
41         else:
42             headers = {}
43 
44         if rdict[json][i]!=‘‘:
45             json = rdict[json][i] #str to dict
46         else:
47             json = {}
48 
49         if rdict[params][i]!=‘‘:
50             params = eval(rdict[params][i]) #str to dict
51         else:
52             params = {}
53 
54         try:
55             if rdict[method]==get:
56                 r = requests.get(url,headers = headers,params = params,verify=False)
57             else:
58                 r = requests.post(url,json = json,headers = headers,verify=False)
59             r.raise_for_status()
60             r.encoding=r.apparent_encoding
61             global relist
62             relist.append(Casename: +rdict[casename][i])
63             relist.append(Status: +str(r.status_code))
64             relist.append(Date: +r.headers[Date])
65             
66         except Exception as e:
67             print(e)    
68             print(fail)
69             relist.append(str(e))
70 
71 #把返回的结果输出到html中,形成HTML报告(知识简单的展示,没有样式)
72 def output_html(): 
73     fout=open(output.html,w,encoding=UTF-8, newline=‘‘) 
74     fout.write(<html>) 
75     fout.write(<head>) 
76     fout.write(<meta charset = "UTF-8"/>) 
77     fout.write(</head>) 
78     fout.write(<body>)
79     fout.write(<h1>report<h1>)
80     fout.write(<table>)
81     fout.write(<tr>)
82     #fout.write(‘<td>%s</td>‘ % relist)
83     for i in range(0,len(relist)):
84         fout.write(<td>%s</td> % relist[i])
85     fout.write(</tr>)
86     fout.write(</table>)
87     fout.write(</body>)
88     fout.write(</html>) 
89     fout.close()
90 
91 if __name__ == __main__:
92     imptestcase()
93     sendpost()
94     output_html()

测试用例

技术分享

测试结果

技术分享

 

之后的计划:

1. 优化导入用例以及封装请求的代码

2. 优化测试结果,展示位更友好的页面

3. 由于这短时间学习的过程中使用的都是notepad来编写代码,随着代码量的增加,下一步考虑使用pycharm等IDE,便于管理。

 

题外话:

刚开始学习Python,代码写的太low,仅仅为了实现功能而已,博客园的各位大神请勿鄙视,希望能收到好的建议。

 

以上是关于python自学1——代码优化1的主要内容,如果未能解决你的问题,请参考以下文章

python自学1——接口测试

如何优化C ++代码的以下片段 - 卷中的零交叉

暑假自学JAVA Web心得

优化 C# 代码片段、ObservableCollection 和 AddRange

自学Python-Day1.1

如何在 python 中并行化以下代码片段?