ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

python学习笔记(接口自动化框架 V20)(1/2)

来源:网络整理     时间:2016-04-15     关键词:python,自动化

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

这个是根据上次框架版本进行的优化

用python获取excel文件中测试用例数据

通过requets测试接口、并使用正则表达式验证响应信息内容

生成xml文件测试报告

版本更新内容:

1. 整理了CreateTest.test_main()流程逻辑

2. 优化了testcase.xls文件格式

3. 添加了生成XML文件测试报告

python学习笔记(接口自动化框架 V20)

代码如下:

  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()

下面是测试入口:

相关图片

相关文章