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的主要内容,如果未能解决你的问题,请参考以下文章