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

之前是利用python自带的unittest测试框架

这次自己设计一个 之后再一点点往里面加功能

(ps:当然这个框架真的是很简单。。很简单。。。很简单。。。)

excel文件格式:

 1 #!/usr/bin/env python
 2 # -*- coding: utf_8 -*-
 3
 4 import xlrd
 5 import json
 6
 7
 8 class CreateExcel:
 9     def __init__(self):
10         pass
11
12     @classmethod
13     def open_excel(cls):
14         path = "testcase.xls"
15         workbook = xlrd.open_workbook(path)
16         table = workbook.sheets()[0]
17         return table
18     # 获取sheet
19
20     @classmethod
21     def get_nrows(cls, table):
22         nrows = table.nrows
23         return nrows
24     # 获取行号
25
26     @classmethod
27     def get_name(cls, table, nrows):
28         testname = []
29         for i in range(1, nrows):
30             testname.append(table.cell(i, 0).value)
31         return testname
32     # 获取用例name
33
34     @classmethod
35     def get_data(cls, table, nrows):
36         testdata = []
37         for i in range(1, nrows):
38             data = json.loads(table.cell(i, 1).value)
39             testdata.append(data)
40         return testdata
41     # 获取data接口参数
42
43     @classmethod
44     def get_url(cls, table, nrows):
45         testurl = []
46         for i in range(1, nrows):
47             testurl.append(table.cell(i, 2).value)
48         return testurl
49     # 获取接口测试url
50
51     @classmethod
52     def get_method(cls, table, nrows):
53         testmethod = []
54         for i in range(1, nrows):
55             testmethod.append(table.cell(i, 3).value)
56         return testmethod
57     # 获取接口测试method
58
59     @classmethod
60     def get_pattern(cls, table, nrows):
61         testpattern = []
62         for i in range(1, nrows):
63             testpattern.append(table.cell(i, 4).value)
64         return testpattern
65     # 获取接口期望响应结果
66
67     @classmethod
68     def get_report(cls, table, nrows):
69         testreport = []
70         for i in range(1, nrows):
71             testreport.append(table.cell(i, 5).value)
72         return testreport
73         # 获取用例期望的运行结果
74
75
76 if __name__ == "__main__":
77     CreateExcel()

上面代码是处理excel文档的

下面代码是测试平台

 1 #!/usr/bin/env python
 2 # -*- coding: utf_8 -*-
 3
 4
 5 import requests
 6 import re
 7 from createexcel import CreateExcel
 8
 9
10 class CreateTest:
11     def __init__(self):
12         pass
13
14     @classmethod
15     def test_api(cls, method, url, data):
16         global results
17         if method == "post":
18             results = requests.post(url, data)
19         if method == "get":
20             results = requests.get(url, data)
21         return results
22
23     @classmethod
24     def test_on(cls):
25         print "用例执行开始"
26
27     @classmethod
28     def test_close(cls):
29         print "用例执行结束"
30
31     @classmethod
32     def test_result(cls, ra, rb):
33         if ra == rb:
34             print "测试结果: 测试通过"
35         else:
36             print "测试结果: 测试失败"
37
38     @classmethod
39     def test_http(cls, code):
40         if code == 200:
41             print "测试请求: 请求通过"
42
43     @classmethod
44     def test_main(cls):
45         global report
46         table = CreateExcel.open_excel()
47         nrows = CreateExcel.get_nrows(table)
48         for i in range(0, nrows - 1):
49             testname = CreateExcel.get_name(table, nrows)[i]
50             testdata = CreateExcel.get_data(table, nrows)[i]
51             testurl = CreateExcel.get_url(table, nrows)[i]
52             testmethod = CreateExcel.get_method(table, nrows)[i]
53             testpattern = CreateExcel.get_pattern(table, nrows)[i]
54             testreport = CreateExcel.get_report(table, nrows)[i]
55             CreateTest.test_on()
56             print "测试用例:", testname
57             try:
58                 testresults = CreateTest.test_api(testmethod, testurl, testdata)
59                 CreateTest.test_http(testresults.status_code)
60                 pattern = re.compile(testpattern)
61                 match = pattern.search(testresults.url)
62                 if match.group() == testpattern:
63                     report = "pass"
64                 CreateTest.test_result(testreport, report)
65             except AttributeError:
66                 report = "no"
67                 CreateTest.test_result(testreport, report)
68             except Exception.__base__:
69                 print "测试请求: 请求失败"
70                 report = None
71                 CreateTest.test_result(testreport, report)
72             CreateTest.test_close()
73
74
75 if __name__ == ‘__main__‘:
76     CreateTest()
时间: 2024-10-19 21:34:53

python学习笔记(接口自动化框架)的相关文章

python学习笔记-Day17 - web框架

web服务器和web客户端之间的网络通信,本质上是 socket的通信, 服务器端运行的是socketServer 客户端运行的是socketClient. 对于python web程序来说,一般来说会分为两部分,服务器程序\应用程序,  (jsp好像也是这样的,让我想起了java的war包,不是太了解,只知道这些war包可以组成jsp上的应用). 服务器程序:负责对socket服务器进行封装,在请求到来的时候,对请求进行整理, 应用程序   : 负责具体的业务逻辑处理, 为了方便应用程序的开发

Python学习笔记之Scrapy框架入门

创建一个新的Scrapy项目 定义提取的Item 写一个Spider用来爬行站点,并提取Items 写一个Item Pipeline用来存储提取出的Items 新建工程 在抓取之前,你需要新建一个Scrapy工程.进入一个你想用来保存代码的目录,然后执行:scrapy startproject tutorial 这个命令会在当前目录下创建一个新目录tutorial,它的结构如下: T:. │  scrapy.cfg │ └─tutorial │  items.py │  pipelines.py

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

python3+request接口自动化框架

首次书写博客,记录下写的自动化接口框架,框架比较简单,哈哈哈,算是记录下历程把!~~~ 一.本次框架由python3.6 书写 1.准备代码环境,下载python3.6    下载地址:https://www.python.org/downloads 2.下载pycharm 软件. 二.开始创建python接口自动化框架: 1.这是我创建的框架中的各个文件夹,分别有config  配置文件夹.fengzhuang   将接口用get post  两种传输方式进行封装并自动来区分执行. 2.log

【python学习笔记】7.更加抽象

[python学习笔记]7.更加抽象 类的定义就是执行代码块 在内存保存一个原始实例,可以通过类名来访问 类的实例化,是创建一个原始实例的副本, 并且所有成员变量与原始实例绑定 通过修改实例变量,可以解除与原始实例的绑定 self表示当前实例的引用 成员变量也称为特性 __bases__: 基类 __class__: 对象类型 __dict__: 所有特性 python的接口不用显式的制定对象必须包含哪些方法,只要对象符合当前接口就可以调用 可以对象上通过赋值的方式,创建变量 #!/usr/bi

hadoop 学习笔记:mapreduce框架详解

hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我 学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能是我做技术研究的 思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习 hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不

python学习笔记(日志系统实现)

博主今天在自己的接口自动化框架中添加了日志系统 基于python自带的logging库.包括日志主函数.生成日志文件: 1 # -*- coding: utf-8 -*- 2 # 日志系统 3 # 时间:2017-08-31 4 # 姓名:xx 5 6 import logging 7 import os 8 from datetime import datetime 9 10 11 class MainLog: 12 def __init__(self): 13 pass 14 15 @sta

python 学习笔记 13 -- 常用的时间模块之time

Python 没有包含对应日期和时间的内置类型,不过提供了3个相应的模块,可以采用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包含一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具 *    datetime 模块为日期.时间以及日期时间值提供一个更高层接口.datetime 中的类支持算术.比较和时区配置. *    calendar 模块可以创建周.月和年的格式化表示.它还可以用来计算重复事件.给定日期是星期几,以及其他基

python学习笔记(03):函数

默认参数值:   只有在行参表末尾的哪些参数可以有默认参数值,即 def func(a, b=5 )#有效的 def func( a=5,b )#无效的 关键参数: #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) #输出: $ pyth

雨痕 的《Python学习笔记》--附脑图(转)

原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意,这本学习笔记不适合Python新手学习. 从目录上看,并不能看出这本笔记有何特别之处,但看到里面的内容,感到非常惊喜.这本书更多的是关注一些底层的实现细节,以及更多的考虑性能方面(讲解内容很多会涉及到内存管理.缓存.垃圾回收.堆栈帧等方面的内容). 目前本笔记的最近更新时间为2013.03.30.大家可以到