使用python做接口自动化测试容易吗

作者&投稿:枕忽 (若有异议请与网页底部的电邮联系)
Python可以做自动化测试吗?~

当然可以,除了自动化测试外,自动化运维、爬虫、网站开发、游戏开发、人工智能也可以。

1.框架搭建
1.1 将struts2中的jar文件导入到项目中
commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,freemarker-2.3.15.jar,ognl-2.7.3.jar
struts2-core-2.1.8.1.jar,xwork-core-2.1.6.jar
1.2 将struts.xml文件拷贝到项目的src目录下
1.3 修改web.xml文件
添加:

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2
/*

2.action中方法的调用方式
2.1 自动方法调用(只能调用execute)
2.2 指定方法调用(通过设置action标签中的method属性)
2.3 动态方法调用(在调用时,在action后加!方法名称,如:login!deletUser)
注意:
2.4 通配符调用
3. action接收客户端参数的方式
3.1 直接在action中定义参数变量,并生成set和get方法
3.2 定义接收参数的类
注意:都要为action的成员变量提供get和set方法
3.3 让action实现ModelDriven接口,并实现里面的getModel方法
4.获取request,session,application的方式
4.1 用ActionContext获取,实际上获取到的都是Map对象
4.2 用ServletActionContext获取,获取到的是基于Servlet API的对象

为什么要做接口自动化测试?
在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成本低,容易提高覆盖率等特点,越来越受重视。
为什么要自己写框架呢?
使用Postman调试通过过直接可以获取接口测试的基本代码,结合使用requets + unittest很容易实现接口自动化测试的封装,而且requests的api已经非常人性化,非常简单,但通过封装以后(特别是针对公司内特定接口),可以进一步提高脚本编写效率。
一个现有的简单接口例子
下面使用requests + unittest测试一个查询接口
接口信息如下
请求信息:
Method:POST
URL:api/match/image/getjson
Request:
{
"category": "image",
"offset": "0",
"limit": "30",
"sourceId": "0",
"metaTitle": "",
"metaId": "0",
"classify": "unclassify",
"startTime": "",
"endTime": "",
"createStart": "",
"createEnd": "",
"sourceType": "",
"isTracking": "true",
"metaGroup": "",
"companyId": "0",
"lastDays": "1",
"author": ""
}

Response示例:
{
"timestamp" : xxx,
"errorMsg" : "",
"data" : {
"config" : xxx
}

Postman测试方法见截图:

测试思路
1.获取Postman原始脚本
2.使用requests库模拟发送HTTP请求**
3.对原始脚本进行基础改造**
4.使用python标准库里unittest写测试case**
原始脚本实现
未优化
该代码只是简单的一次调用,而且返回的结果太多,很多返回信息暂时没用,示例代码如下
import requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = {"category":"image","offset":"0","limit":"30","sourceId":"0","metaTitle":"","metaId":"0","classify":"unclassify","startTime":"","endTime":"","createStart":"","createEnd":"","sourceType":"","isTracking":"true","metaGroup":"","companyId":"0","lastDays":"1","author":""}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}

response = requests.request("POST", url, headers=headers, params=querystring)

print(response.text)

优化 第一版
调整代码结构,输出结果Json出来,获取需要验证的response.status_code,以及获取结果校验需要用到的results['total']
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import unittestimport jsonimport tracebackimport requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}#Post接口调用
response = requests.request("POST", url, headers=headers, params=querystring)#对返回结果进行转义成json串
results = json.loads(response.text)#获取http请求的status_codeprint "Http code:",response.status_code#获取结果中的total的值print results['total']#print(response.text)

优化 第二版
接口调用异常处理,增加try,except处理,对于返回response.status_code,返回200进行结果比对,不是200数据异常信息。
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import jsonimport tracebackimport requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}try: #Post接口调用
response = requests.request("POST", url, headers=headers, params=querystring) #对http返回值进行判断,对于200做基本校验 if response.status_code == 200:
results = json.loads(response.text) if results['total'] == 191: print "Success" else: print "Fail" print results['total'] else: #对于http返回非200的code,输出相应的code raise Exception("http error info:%s" %response.status_code)except:
traceback.print_exc()


Python字符串拼接的几种方法
Python字符串拼接的几种方法(python 3.5):1、str1 + str2 使用+号进行字符串拼接:'wbz' + 'ctt'='wbzctt'2、str1,str2 这种方式有点特殊,如果两个字符串用逗号隔开,那么两个字符串就会被拼接,严格讲不 叫拼接:'wbz','ctt'=('wbz’,'ctt')3、str1 str2 这种拼接方...

python怎么做接口测试工具
之前使用过urllib和urllib2做接口测试,在做的途中,感觉使用urllib2直接进行的get,post 请求并没有那么好用。作为测试人员,所需要的测试工具应当以方便为第一要务,测试的耗时只要是真正的无人值守,耗时不是太久的都可以接受。所以,本人又尝试了一个新的包:requests。Requests 是用Python语言编写,...

使用python做接口自动化测试容易吗
接口调用异常处理,增加try,except处理,对于返回response.status_code,返回200进行结果比对,不是200数据异常信息。!\/usr\/bin\/env python#coding: utf-8'''unittest merchant backgroud interface author: zhang_jin version: 1.0 see:http:\/\/www.python-requests.org\/en\/master\/ '''import jsonimpor...

怎么用python连接mysql数据库
In [1]: from mysql import connector In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")但是连接数据库的背后发生了什么呢?答案 当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程...

用Python 为接口测试自动生成用例
本文以python为例进行演示:假设有add函数,接收两个类型整数参数,并返回它们的相加结果 首先写出一个简单的测试用例 正如前面所说,一个这样的用例,根本没信心覆盖全部的场景,例如:所以接下来怎么办?改为基于属性的测试 执行结果 由结果可知,工具根据 参数是整数 这一规范,自动生成、执行了大量的...

用python 怎么和硬件进行链接,通信,交互?
1.介绍 计算机系统:计算机硬件,操作系统,应用程序 应用程序无法直接操作硬件,通过操作系统来操作文件,进而读\/写硬件中的文件。python打开文件过程:打开 f=open('a.txt','r')通过句柄对文件进行操作 read_f=f.read()关闭文件 f.close()with open('a.txt','r') as f: #不需要关闭 f.close...

Python连接mysql数据库及python使用mysqldb连接数据库教程
做python的时候需要用到数据库,于是自己重新整理了一下数据库的知识,并且熟悉了python中MysqlDB模块的功能和函数等接口,现在系统地来总结一下吧: 首先你要做的还是下载相应的模块并且安装啦,下载地址自己搜,网上有很多,安装的话也很好办,安装之后python的安装目录下的Lib文件夹下的site-packages文件夹下的MySQLdb文件夹...

如何用python定义一个函数来连接两个点?
导入math包import math#定义点的函数class Point: x = 0 y = 0 z = 0 def __init__(self, x, y, z): self.x = x self.y = y self.z = z def getx(self): return self.x def gety(self): return self.y def getz(self): return s...

如何使用python多处理过程同时连接2个传感器一个超声波传感器一个红外传...
使用Python的多进程模块multiprocessing来同时连接两个传感器。导入multiprocessing模块,并创建两个子进程,每个子进程分别用于连接一个传感器。import multiprocessing import time 定义函数,用于连接超声波传感器 def connect_ultrasonic():连接超声波传感器的代码 print("Connecting ultrasonic sensor...")time....

用Python编程实现把任意两个文本文件内容连接起来存进一个新文本文件...
with open(newfile, 'w') as f:with open(file1,'r') as f1:for line in f1.lines:f.writeline(line)with open(file2,'r') as f2:for line in f2.lines:f.writeline(line)当然这只是最简单粗爆的实现方式, 代码还可以再优化,可以写的更优优雅,复用性更强,想进一步学习python...

屏南县19128132423: 使用python做接口自动化测试容易吗 -
温哲苏适: 为什么要做接口自动化测试?在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归.但接口自动化测试因其实现简单、维护成本低,容易提高覆盖率等特点,越来越受重视.为什么要自己写...

屏南县19128132423: 怎么用python做自动化测试 -
温哲苏适: 1新建一台Jenkins服务器,安装并配置好Jenkins2配置一个自动化测试脚本的代码库,可以使用Git或者SVN等版本控制工具.然后在Jenkins服务器上配置一个Job,负责自动的同步最新代码到Jenkins服务器上.3配置要跑自动化测试的虚拟机...

屏南县19128132423: python 的接口自动化测试使用的核心库是哪一个? -
温哲苏适: 就是使python去实现接口测试,说白了就是写一些测试逻辑.python去写,速度快,简单python也有很多自动化测试相关的工具.roboframework,是一个自动化测试框架,写自动化非常简单.

屏南县19128132423: 如何用python做自动化测试 -
温哲苏适: 目前大家对Python都有一个共识,就是他对测试非常有用,自动化测试里Python用途也很广,但是Python到底怎么进行自动化测试呢?今天就简单的向大家介绍一下怎么使用Python进行自动化测试,本文只是自己的一点点分享,若有错误,请大...

屏南县19128132423: 如何使用python根据接口文档进行接口测试 -
温哲苏适: 1,关于requests requests是python的一个http客户端库,设计的非常简单,专门为简化http测试写的.2,开发环境 mac下面搭建开发环境非常方便.sudo easy_install pip sudo pip install requests 测试下:python命令行 import requests>>> r = ...

屏南县19128132423: python自动化测试接口怎么实现模拟不同的网络环境访问接口 -
温哲苏适: 用python做自动化测试,主要是接口测试和UI自动化测试.一、接口测试:http协议的举例:可以用python自带的urllib\urllib2模拟,模拟前端向服务器发送数据,获取返回值后,进行校验和判断来进行接口测试.网上的例子也比较多,这里简单说一下,比如request中data的边界值测试、字符测试、非空为空测试等等,都可以做 二、UI自动化测试:html页面(python+selenium)或者一些安卓app(python+appiun)可以用.主要是页面元素的检查、输入等.比如可以写一个脚本,自动登录百度页面,搜索某一个关键字,并且获得此关键字的百度搜索数量.

屏南县19128132423: 如何使用python做android的自动化测试 -
温哲苏适: 安卓的自动化测试能做的还是挺多的.首先要了解一下自己的项目,看看有哪些比较适合,大概可以分为下面几种:monkey.测试软件的稳定性、健壮性.monkeyrunner.可以模拟你在模拟器或设备中能做的事情,支持记录和回放.可以做多设备控制、功能测试、回归测试等.appium.移动端的自动化测试框架,移动网页应该中比较适合,基于网页协议的,可以做APP的UI自动化测试、回归测试等.接口测试.主要是针对服务器的接口进行测试.以上几种都可以支持python语言调用和编写,供楼主参考.

屏南县19128132423: Python为什么可以做自动化测试? -
温哲苏适: 当然可以1、编写Python版本的minicom,这个是自动化测试日志记录的需要 用于控制串口输出的字符颜色,高亮显示出错信息,方便开发者在线调试问题 2、控制程控电源、程控开关,这些可以自动化测试的硬件基础 3、写整套测试框架,控制整个测试交互流程,Case管理等等 Python运行起来效率没那么高,但是对于编写来说是非常高效的.

屏南县19128132423: 如何搭建python自动化测试框架 -
温哲苏适: Auty文件夹结构介绍1. actions文件夹:包含了和业务相关的包含可复用方法的脚本文件,根据业务的不同可以在actions文件夹下创建不同的业务文件夹;2. constants文件夹:包含了常量初始化的python脚本文件,根据业务划分可以再创建子文...

屏南县19128132423: 如何使用Python和Nose实现自动化测试 -
温哲苏适: 如何使用Python和Nose实现自动化测试?本文我将详细介绍使用Appium下的Python编写的测试的例子代码对一个iOS的样例应用进行测试所涉及的各个步骤,而对Android应用进行测试所需的步骤与此非常类似.然后按照安装指南,在你的机器...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网