本篇文章主要介绍了"python学习笔记(接口自动化框架 V20)",主要涉及到python,自动化方面的内容,对于Pythonjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
这个是根据上次框架版本进行的优化用python获取excel文件中测试用例数据通过requets测试接口、并使用正则表达式验证响应信息内容生成xml文件测试报告...
这个是根据上次框架版本进行的优化
用python获取excel文件中测试用例数据
通过requets测试接口、并使用正则表达式验证响应信息内容
生成xml文件测试报告
版本更新内容:
1. 整理了CreateTest.test_main()流程逻辑
2. 优化了testcase.xls文件格式
3. 添加了生成XML文件测试报告

代码如下:
1#!/usr/bin/env python 2# -*- coding: utf_8 -*- 3# 获取测试用例文件excel 4 5import xlrd
6import json
7 8 9class CreateExcel:
10def__init__(self):
11pass 12 13 @classmethod
14def open_excel(cls):
15 path = "testcase.xls" 16 workbook = xlrd.open_workbook(path)
17 table = workbook.sheets()[0]
18return table
19 20# 获取sheet 21 22 @classmethod
23def get_nrows(cls, table):
24 nrows = table.nrows
25return nrows
26 27# 获取行号 28 29 @classmethod
30def get_id(cls, table, nrows):
31 testid = []
32for i in range(1, nrows):
33 testid.append(table.cell(i, 0).value)
34return testid
35 36 @classmethod
37def get_name(cls, table, nrows):
38 testname = []
39for i in range(1, nrows):
40 testname.append(table.cell(i, 1).value)
41return testname
42 43# 获取用例name 44 45 @classmethod
46def get_data(cls, table, nrows):
47 testdata = []
48for i in range(1, nrows):
49try:
50 data = json.loads(table.cell(i, 2).value)
51 testdata.append(data)
52except ValueError:
53 testdata.append(None)
54return testdata
55 56# 获取data接口参数 57 58 @classmethod
59def get_url(cls, table, nrows):
60 testurl = []
61for i in range(1, nrows):
62 testurl.append(table.cell(i, 3).value)
63return testurl
64 65# 获取接口测试url 66 67 @classmethod
68def get_method(cls, table, nrows):
69 testmethod = []
70for i in range(1, nrows):
71 testmethod.append(table.cell(i, 4).value)
72return testmethod
73 74# 获取接口测试method 75 76 @classmethod
77def get_pattern(cls, table, nrows):
78 testpattern = []
79for i in range(1, nrows):
80 testpattern.append(table.cell(i, 5).value)
81return testpattern
82 83# 获取接口期望响应结果 84
1#!/usr/bin/env python 2# -*- coding: utf_8 -*- 3# 测试核心组件 4 5import requests
6import re
7from datetime import datetime
8from createexcel import CreateExcel
9from xml.dom import minidom
10import sys
11 12 13class CreateTest:
14 reload(sys)
15 sys.setdefaultencoding("utf-8")
16 17# 避免字符串写入文件出错 18 19def__init__(self):
20pass 21 22 @classmethod
23def test_api(cls, method, url, data):
24global results
25try:
26if method == "post":
27 results = requests.post(url, data)
28if method == "get":
29 results = requests.get(url, data)
30return results
31except Exception.__bases__:
32print"服务器访问失败" 33 34# 接口函数 35 36 @classmethod
37def test_on(cls):
38print"用例执行开始" 39 40 @classmethod
41def test_close(cls):
42print"用例执行结束" 43 44 @classmethod
45def test_result(cls, pa):
46global report
47try:
48 pattern = re.compile(pa)
49 match = pattern.search(testresults.text)
50if match.group() == pa:
51 report = "测试通过" 52except AttributeError:
53 report = "测试失败" 54return report
55 56# 正则表达式检测 57 58 @classmethod
59def test_http(cls, code):
60print"请求返回状态码: ", code
61 62 @classmethod
63def test_time(cls):
64 nowtime = datetime.today()
65 time = nowtime.strftime("%Y-%m-%d %H:%M:%S")
66return time
67 68# 获取当前时间转化字符串 69 70 @classmethod
71def test_report(cls):
72 nowtime = datetime.today()
73 reportime = nowtime.strftime("%Y%m%d%H%M%S")
74 reportname = reportime + ".xml" 75return reportname
76 77# 获取测试报告文件名称 78 79 @classmethod
80def test_main(cls):
81global testresults
82 table = CreateExcel.open_excel()
83 nrows = CreateExcel.get_nrows(table)
84 xml = minidom.Document()
85 xml.appendChild(xml.createComment("测试报告"))
86 caselist = xml.createElement("caselist")
87 xml.appendChild(caselist)
88for i in range(0, nrows - 1):
89 testid = CreateExcel.get_id(table, nrows)[i]
90 testname = CreateExcel.get_name(table, nrows)[i]
91 testdata = CreateExcel.get_data(table, nrows)[i]
92 testurl = CreateExcel.get_url(table, nrows)[i]
93 testmethod = CreateExcel.get_method(table, nrows)[i]
94 testpattern = CreateExcel.get_pattern(table, nrows)[i]
95 96# 执行测试 97 CreateTest.test_on()
98 testresults = CreateTest.test_api(testmethod, testurl, testdata)
99 testcode = str(testresults.status_code)
100try:
101 CreateTest.test_http(testresults.status_code)
102except AttributeError:
103pass104 CreateTest.test_close()
105# 执行结束106# 生成xml文件107 case = xml.createElement("case")
108 case.setAttribute("id", testid)
109# 输入用例ID110111 name = xml.createElement("name")
112 name.appendChild(xml.createTextNode(testname))
113# 输入用例名称114 method = xml.createElement("method")
115 method.appendChild(xml.createTextNode(testmethod))
116# 输入接口类型117 code = xml.createElement("code")
118 code.appendChild((xml.createTextNode(testcode)))
119# 输入用例返回状态码120 result = xml.createElement("result")
121 result.appendChild(xml.createTextNode(CreateTest.test_result(testpattern)))
122# 输入用例测试结果123 time = xml.createElement("time")
124 time.appendChild(xml.createTextNode(CreateTest.test_time()))
125# 输入用例执行时间126127 case.appendChild(name)
128 case.appendChild(method)
129 case.appendChild(code)
130 case.appendChild(result)
131 case.appendChild(time)
132133 caselist.appendChild(case)
134# xml文件生成结束135 filename = file(CreateTest.test_report(), "w+")
136# 生成以当前时间命名的测试报告文件137 xml.writexml(filename)
138 filename.close()
139# 关闭文件140141142if__name__ == '__main__':
143 CreateTest.test_main()
下面是测试入口: