全方面了解接口自动化,看完还不会你锤我

编程之家收集整理的这篇文章主要介绍了全方面了解接口自动化,看完还不会你锤我编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

一、自动化分类(1)接口自动化python/java+requests+unittest框架来实现 python/java+RF(RobotFramework)框架来实现——对于编程要求不高(2)Web UI功能自动化python/java+selenium+unittest+ddt+PO框架来实现 python/java+RFS(RobotFrameWork+Selenium)框架来实现——对于编程要求不高(3)App自动化python/java+appnium+unit

一、自动分类

(1)接口自动

python/java+requests+unittest框架来实现 python/java+RF(RobotFramework)框架来实现——对于编程要求不高

(2)Web UI功能自动

python/java+selenium+unittest+ddt+PO框架来实现 python/java+RFS(RobotFrameWork+Selenium)框架来实现——对于编程要求不高

(3)App自动

python/java+appnium+unittes框架来实现 python/java+RF(RobotFramework)框架来实现——对于编程要求不高

二、接口自动化与Web自动化的区别

(1)接口自动化是没有界面的,不需要对界面元素定位操作,不需要考虑界面延迟的问题,执行效率更高

(2)接口自动化用的是requests测试库,Web自动化用的selenium测试库

(3)接口自动化的覆盖率可以达到100%(绝大部分的接口都可以实现自动化) Web自动化的覆盖率能达到80-90%算OK(可能会有某些功能是没办法实现自动化的)

三、怎么做接口自动

3.1、流程

A. 确定业务范围,哪些业务功能的接口可以做自动化——接口自动化的覆盖率可以达到 100%

B. 时间进度安排,人员分配

C. 确定自动化测试框架

D. 准备数据——准备接口用例数据

E. 编写接口自动脚本

3.2、搭建接口自动化测试环境

1、安装python3.x——配置python的环境变量

2、安装PyCharm——Python开发工具

3、安装测试库:

Requests库—— 提供了丰富的用来发请求,对请求进行处理的API函数

xlrd,xlwt库—— 提供了对Excel文件进行操作的API函数

PyMysqL库—— 提供了对MysqL数据库进行操作的API函数

paramsunittest库—— 实现参数化的库

Json库—— 提供了对Json格式的数据进行操作的API函数

(python自带的基础库) Re库—— 可以使用这个库中的API函数对HMTL数据进行操作

3.3、准备数据

准备接口用例数据 我们把接口用例数据放入在Excel表格中,因为每一个接口都包含:请求地址,请求方式,请求参数以及响应数据;所以在Excel表格中按照以下方式来组织我们的接口用例数据,包含以下几个内容: 用例名称,请求地址,请求方式,请求头,请求参数,预期结果(断言) 然后我们会封装一个函数去读取Excel数据,以参数的形式传递到脚本中,具体操作步骤如下:

3.4、编写自动化测试脚本


1、步骤:
    A、导包
import requests
    B、组织请求参数
url = ‘http://localhost/fw/index.PHP?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’
par = {   
         ‘email’: ‘Jason’,‘user_pwd’: ‘TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdkanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emDWMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==‘,‘auto_login’: 0,‘AJAX’: 1
}
    C、发送请求
res = requests.post(url,data=par)
res = requests.get(url,params=par)
    D、提取响应对象中的数据,并做断言
1、提取响应*body*内容**
     res.text     —— 如果返回的是HTML格式的数据,使用res.text提取`
     res.Json()   —— 如果后台返回的是Json格式的数据,则使用这个API函数提取`
2、提取响应头***
     res.headers
3、提取状态码,响应信息
     res.status_code
     res.reason
4、提取cookie值
     res.cookies()
2、传递请求头
header = {
    ‘User-Agent’: ‘Mozilla/5.0 (windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 firefox/67.0’,‘Accept’: ‘application/xml’,}
res = requests.post(url,data=par,headers=header)    
3、传递cookie,token值
    通过请求头来传递 —— 直接从浏览器上查看cookie值,并传递到后台header = {
    ‘cookie’: ‘PHPSESSID=3724b412550a557825da5528dd6198c6’                  
}
res = requests.post(url,***headers=heade***r,allow_redirects=False) 
    发请求的时候通过cookies这个参数来传递
import requests
#1. 登录获取cookie值
def getcookie():
    url = ‘http://localhost/fw/index.PHP?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’
    par = {
        ‘email’: ‘Jason’,‘AJAX’: 1
    }
    res = requests.post(url,data=par)
    return res.cookies
#2. 调用充值接口
#2.1 获取cookiecookie = getcookie()
#2.2 发充值请求
url = ‘http://localhost/fw/member.PHP?ctl=uc_money&act=incharge_done’
par = {
    ‘check_ol_bl_pay’:’on’,‘money’:1000,‘bank_ID’:0,‘memo’:234567890,‘payment’:5,}
#发充值请求
res1 = requests.post(url,cookies=cookie,allow_redirects=False)            # 自动重定向的,可以取消自动重定向
print(res1.status_code)
print(res1.reason)
print(res1.headers)
    先创建一个session对象,所有请求都使用这个session对象来发送
import requests
#1. 发登录请求
url = ‘http://localhost/fw/index.PHP?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’
par = {
    ‘email’: ‘Jason’,‘AJAX’: 1
}
#创建一个seesion对象,后期使用这个session对象来发请求
ses = requests.session()
#发登录请求,返回的cookie值会自动化保存到session对象中
response1 = ses.post(url,data=par)
#2. 发充值请求
url = ‘http://localhost/fw/member.PHP?ctl=uc_money&act=incharge_done’
par = {
    ‘check_ol_bl_pay’:’on’,}
response2 = ses.post(url,allow_redirects=False)
print(response2.headers)

3.5、工程管理维护与优化

1、数据驱动——实现接口用例数据与脚本分离 我们把接口用例数据放入在Excel表格中,因为每一个接口都包含:请求地址,请求方式,请求参数以及响应数据;所以在Excel表格中按照以下方式来组织我们的接口用例数据,具体操作步骤如下:

    安装xlrd库
    pip install xlrd
    调用xlrd库中的API函数来实现对Excel表格数据的读取
#封装一个读取Excel表格数据的函数
#对Excel表格数据的读取需要用到一个库——xlrd库
import xlrd
def get_data(filename,sheetname):
    #1. 打开Excel文件
    workbook = xlrd.open_workbook(filename)    
    #2. 打开Excel文件中的某张表
    sheet = workbook.sheet_by_name(sheetname)   
    #3. 读取表中的内容
    List = []
    for I in range(1,sheet.nrows):
        data = sheet.row_values(i)
        List.append(data)  
    return List
if __name__==‘__main__’:
    result = get_data(‘D:\\JMeter\\1947_Project\\cxy-project02\\data\\接口用例数据.xls’,’登录’)
    print(result)
    问题解决1
工程问题:
    1、没有安装xlrd
    2、没有把xlrd导入工程

2、unittest框架

作用:用来管理用例,加载用例,执行用例

原理:有几个核心组件

1、测试固件 setUp() 每条用例执行之前,首先会执行这个setUp()方法,在setUp()方法中完成准备初始化工作 比如:连接数据库,后期在将Web UI功能自动化的时候,可以在这里去打开浏览器,配置 tearDown() 每条用例执行完成之后,回收一些资源,比如:关闭数据库关闭浏览器

2、测试用例 每一条用例需要实现一个用例方法,每个用例方法都必须要以test开头

3、测试套件 执行用例的时候,需要创建测试套件,把用例加入测试套件。

4、加载器 用来加载用例的,把测试用例加入测试套件中

5、执行器 用来执行测试套件中的用例的 如何使用unittest框架来编写用例

#1. 导包
import time
import unittest
import requests
from common.excelUtils import get_data
import paramunittest
#读取excel表格中的数据
List = get_data(‘D:\\JMeter\\1947_Project\\cxy-project02\\data\\接口用例数据.xls’,’登录’)
#2. 定义一个类,去继承unittest.TestCase
@paramunittest.parametrized(*List)                  # 引用List中的所有数据
class FwLogin(unittest.TestCase):
    def setParameters(self,case_name,url,method,headers,params,assert_info):
        ‘’’
        有多少条用例,这个函数就会执行多少次,每执行一条用例之前先会执行这个函数,把数据提取出来。
        :param case_name:
        :param url:
        :param method:
        :param headers:
        :param params:
        :param assert_info:
        :return:
        ‘’’
        self.case_name = str(case_name)
        self.url = str(url)
        self.method = str(method)
        self.headers = str(headers)
        self.params = str(params)
        self.assert_info = str(assert_info)
    #1. 实现一个用例方法
    def test_login_case(self):
        time.sleep(5)
        #1. 组织参数
        self.headers= eval(self.headers)                # 将字符串转化为字典
        self.params = eval(self.params)
        #2. 发请求
        if self.method == ‘POST’:
            response = requests.post(self.url,data=self.params,headers=self.headers)
        else:
            response = requests.get(self.url,params=self.params,headers=self.headers)
        #3. 检查,断言
        self.check_result(response)
    def check_result(self,response):
        ‘’’
        断言  检查结果的
        :param response:
        :return:
        ‘’’
        self.assert_info = eval(self.assert_info)           #预期结果
        try:
            self.assertEqual(response.status_code,200,’响应状态码错误’)
            self.assertEqual(response.reason,’OK’,’响应的响应码错误’)
            self.assertDictEqual(response.Json(),self.assert_info,’响应的正文内容不一致!’)
            print(‘%s测试用例通过!’ %self.case_name)
        except AssertionError as e:
            print(‘%s测试用例不通过!%s’ %(self.case_name,e))
 
if __name__ == ‘__main__’:
    unittest.main()

最后:

1、点赞,收藏。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;

2、关注我。让我们成为长期关系,下一个内容分享更多的硬核干货;

3、文章学习资源,均可以免费分享。需要的加我q3177181324。

不要只做收藏从未停止,行动从未开始的人,很多事情,做着做着就无师自通了。如果在做的过程中还能稍微加点思考,稍微看一些别人的经验和做法,成长会更快,效果也会更好!加油吧,测试人!路就在脚下,成功就在明天!

我是阿星君,用心输出有价值的内容,你若盛开,清风自来!

创作不易,不想被白嫖,各位的「点赞」就是阿星君创作的最大动力,我们下篇文章

 

总结

以上是编程之家为你收集整理的全方面了解接口自动化,看完还不会你锤我全部内容,希望文章能够帮你解决全方面了解接口自动化,看完还不会你锤我所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

Ajax文章

XSS文章文章目录什么是XSSXSS能做什么XSS业务场景XSS类型如何检测XSSXSS核心 —— 同源策略注意:XSS语句XSS防御方法XSS检测方法 —— XSS平台反射型XSS练习存储型XSS练习什么是XSS跨站脚本攻击(前端注入)注入攻击的本质,是把用户输入的数据当做前端代码执行。设置cookie操纵浏览器:这里有两个关键条件:第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。SQL注入拼接的是操作数据库的SQL语句。XSS拼接的是网页的HTML代码
前言最近把Nodejs和Ajax学习了一下,找到一个很不错的练手项目:黑马刘龙彬老师主讲的大事件项目,整体看完,给刘老师点个赞,讲的非常细致,开发流程清晰,涉及的知识点也很精准。另外黑马还为这个项目提供了在线接口文档,并且将后端服务器也上线发布了,真是自学小伙伴的福音啊。最后,再次给黑马程序员和刘老师点个赞。项目介绍项目名称大事件后端接口文档说明--ShowDochttps://www.showdoc.com.cn/escook?page_id=3707158761215217
基于 HTML / JS (客户端构造HTTP请求,最常见的 HTTP 客户端,就是浏览器)基于 Java (这种方案是完全可行的,但是实际开发中用的不如上面的方式多)form 的重要参数:光有这一个 form 标签,还没法提交,也没什么东西可提交的还需要搭配 form 里面有一些其他的标签,比如 inputinput 的重要参数:假设用户在此处输入的用户名是 zhangsan,密码是 123此时 form 表单生成的要提交的数据,就形如:username=zhangsan&password=123光
在Servlet中,对于Cookie和Session都有很好的支持,也就是有一些API可以完成会话管理的操作!在HTTPServletRequest里面就有相关的方法:那么HttpSession是什么:响应(HTTPServletResponse)里面也有相关的方法:addCookie()(把指定的Cookie添加到响应中)......
Vue学习笔记(尚硅谷天禹老师讲解)1. Vue核心1.1. Vue简介1.1.1. 官网英文官网中文官网1.1.2. 介绍与描述动态构建用户界面的渐进式JavaScript框架作者:尤雨溪1.1.3. Vue的特点遵循MVVM模式编码简洁,体积小,运行效率高,适合移动/PC端开发它本身只关注UI,可以引入其它第三方库开发项目1.1.4.与其他JS框架的关联借鉴 Angular 的模板和数据绑定技术借鉴 React 的组件化和虚拟DOM
前言:页面上那些数据,绝大部分都不是静态的数据,而是通过调用后台接口把数据渲染到页面上的效果。ajax可以帮助我们更好的去实现这一点,下面是详解在vue中如何使用它。vue本身它是不支持直接发送ajax请求的,需要用到axios(一个基于promise的HTTP库,可以用在浏览器和node.js中)这是Axios文档的介绍,详细可查看:使用说明 · Axios 中文说明 · 看云 Axios安装前台部分1、npm安装npm i axios -S //...
https协议 的工作过程文章目录https协议 的工作过程一、用代码构造http请求二、https ☆(这篇帖子的重点)2.1 加密的概念2.2 加密的工作流程2.2.1 对称加密 ☆2.2.2 非对称加密 ☆前言:前面是对http协议的补充,后面的https工作流程才是这篇帖子的重点!一、用代码构造http请求1、通过HTML中的form标签,构造出GET/POST请求​ > 通过input标签搭配form来使用,实现给服务器提交数据这样的功能。<form action="ht
文章目录1. Ajax概述1.1 AJAX 简介1.2 XML 简介1.3 AJAX 的特点1.3.1 AJAX 的优点1.3.2 AJAX 的缺点2. 原生AJAX 的基本使用2.0 准备工作2.1 核心对象2.2 使用步骤2.3 使用案例1. GET 请求设置请求参数2. POST请求2.4 解决IE 缓存问题2.5 AJAX 请求状态3. jQuery 中的AJAX3.1 get 请求3.2 post 请求4. 跨域4.1 同源策略4.2 如何解决跨域4.2.1 JSONP4.2.2 CORS1.
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注