接口自动化测试总结

news2024/11/18 1:41:43

一、什么项目适合做自动化测试?

软件需求变动不频繁

  测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。

  项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。

项目周期较长

    由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。

自动化测试脚本可重复使用

  自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如C/S系统和B/S系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。

二、web 接口测试分类与测试要点

web 接口测试分类:

服务器接口测试,是测试浏览器与服务器的接口

外部接口测试,典型例子是第三方登录

web接口测试测试要点:

1、请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等

2、检查返回数据的正确性与格式;json是一种非常常见的格式

3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证

4、接口的性能,web接口同样注重性能,这影响用户的使用体验

三、基于python 自带的单元测试框架unittest 编写的接口测试框架特点:

a . 支持简单易用的表格型语法,使得可以用统一方式创建测试用例(.yml / .json 文件)

b . 提供HTML的简单易读的report 和日志结果文件

c . 平台和应用相互独立(平台:测试框架本身;应用:被测程序)

d . 提供XML格式的输出文件,非常容易进行持续集成

e . 支持创建数据驱动的测试用例 

f . 支持代码驱动(比如有关联的接口)

g . 提供test case和test suite级别的setup和teardown

注:

数据驱动:因为数据的改变导致结果的改变(参数化)

数据的改变(更新)驱动自动化的执行,从而引起结果改变

四、基于python 自带的单元测试框架unittest 编写的接口测试架构

分为三层,分别是用例层、控制层、引擎层(驱动层)

用例层:用例层支持 yml文件 json文件 用它来写用例的好处是灵活,字段不需要像excel里面那样

控制层:控制层用来发邮件与 产生报告

引擎层(驱动层):用python 自带的requests 模块调用接口,封装了各种方法,支持加cookie header 等的各种入参类型

 五、完整的测试流程

A . 编写测试用例

直接使用Python自带的单元测试框架unittest来编写自动化测试用例,利用其组织测试用例,断言预期结果,以及批量执行测试用例等功能,可以很好的进行Web自动化测试的开发

代码参考个人git 仓库:https://coding.net/u/chendai21/p/llq-code/git

B. 执行测用例, 执行完毕后自动生成测试报告,发送邮件

整个代码执行过程可以分成二个步骤:

    1.通过unittest框架的discover()找到匹配的测试用例(以test_开头的脚本),由BeautifulReport 的BeautifulReport 方法执行测试用例并生成最新的测试报告。

前置条件:把BeautifulReport文件解压后拷贝到External Libraries—>site-packages里面,主要用于生成HTML测试报告,以便生成一份通俗易懂的测试报告来展示自动化测试成果。

    2.先封装sendmail类再定义send_report()函数(发送指定路径下某文件的邮件),将得到的最新测试报告的完整路径传给sendmail,实现发邮件功能。

代码如下:

import sys,os
BASE_PATH = os.path.dirname(os.path.dirname(
   os.path.abspath(__file__)))
sys.path.insert(0,BASE_PATH)
from common.tools import GetCase
from conf.setting import PY_PATH,REPORT_PATH
import unittest,BeautifulReport
def send_report(all_count, pass_count, report_file=None):
   title = time.strftime('%Y-%m%d %H%M%S') + '接口测试报告'
   content = '''
       Dear all:
           本次接口测试共运行{all}条测试用例,通过{ok}条,失败{fail}条。
           测试报告详细见附件。
              '''.format(all=all_count, ok=pass_count, fail=(all_count - pass_count))
   # 发送测试报告
   m = SendMail(MAIL_USER_INFO, MAIL_PASSWD, RECV, title, content, file=report_file)
   m.send_mail()

def run():
   g = GetCase()
   g.creat_py() #生成测试文件
   suite = unittest.TestSuite() #创建测试套装
   all_cases = unittest.defaultTestLoader.discover(PY_PATH,'Test*.py') #读取测试用例
   [suite.addTests(case) for case in all_cases]
   report_html = BeautifulReport.BeautifulReport(suite)
   report_filename = '{date}_TestReport.html'.format(date=time.strftime('%Y%m%d%H%M%S'))
   # 生成报告的文件名格式20180329190544_TestReport.html
   report_html.report(filename=report_filename, description='用例描述', log_path=REPORT_PATH)
   send_report((report_html.failure_count + report_html.success_count), report_html.success_count,
            os.path.join(REPORT_PATH, report_filename))
# BeautifulReport 生成的报告 用点就能看到它的属性了(success_count、failure_count)
# 实际上BeautifulReport是一个类 然后实例化后有对应的实例变量

run()
生成的测试报告如下图:

收到的邮件如下图:

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/984171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringCloudAlibaba】Seata分布式事务使用

文章目录 分布式事务问题示例Seata概述、官网一个典型的分布式事务过程处理过程全局GlobalTransactional分布式交易解决方案流程图 Seata安装下载修改conf目录下的application.yml配置文件dashboard demo 分布式事务问题示例 单体应用被拆分成微服务应用,原来的三个…

详解Transformer中的Encoder

一.Transformer架构 左半边是Encoder,右半边是Decoder。 二.Vision Transformer Vision Transformer取了Transformer的左半边。包含 Input EmbeddingPositional Encoding多头注意力机制 Add & Norm(前馈网络)Feed Forward Add & Norm 2.1 Input Embe…

C51智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结

目录 1.电机模块开发 1.1 让小车动起来 1.2 串口控制小车方向 1.3 如何进行小车PWM调速 1.4 PWM方式实现小车转向 2.循迹小车 2.1 循迹模块使用 2.2 循迹小车原理 2.3 循迹小车核心代码 3.跟随/避障小车 3.1 红外壁障模块分析​编辑 3.2 跟随小车的原理 3.3 跟随小…

世界级黑客丨电脑犯罪界的汉尼拔

被美国FBI称为电脑界的汉尼拔的人,有什么样的故事? 这个人就是世界级黑客凯文李波尔森,他在早期是正儿八经的黑客,他在17岁的时候就使用TRS-80电脑攻入美国国防部的高等研究计划署网络,但是当时他进去啥也没干&#x…

lambda nodejs 函数降低冷启动时间的最佳实践

lambda nodejs 函数降低冷启动时间的最佳实践 lambda nodejs 函数降低冷启动时间的最佳实践 前言什么是冷启动时间打包服务端 js什么是 inline进一步封装的打包工具存在的弊端以及解决方案Next Chapter完整示例及文章仓库地址 前言 本文章的思路,继承发展自这两篇…

vite vue项目 运行时 \esbuild\esbuild.exe 缺失 错误码 errno: -4058, code: ‘ENOENT‘,

vite vue项目运行 npm run dev 报错某个模块启动文件丢失信息 D:\PengYe_code\2\vite-vue3-admin>npm run dev> vite-vue3-admin1.0.2 dev > vitenode:events:504throw er; // Unhandled error event^Error: spawn D:\PengYe_code\2\vite-vue3-admin\node_modules\vi…

jupyter 添加中文选项

文章目录 jupyter 添加中文选项1. 下载中文包2. 选择中文重新加载一下,页面就变成中文了 jupyter 添加中文选项 1. 下载中文包 pip install jupyterlab-language-pack-zh-CN2. 选择中文 重新加载一下,页面就变成中文了 这才是设置中文的正解&#xff…

出现Browse information of one xxxx解决方法

不良现象如下: Browse information of one or more files is not available: Doing a project rebuild might fix this. 解决的方法:将C文件里面的内容全部注释掉,再编译正常。 然后再将注释掉的代码打开,再次编译就正常了。

【笔试强训选择题】Day35.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言 一、Da…

什么是互联网打工人都需要知道的API?

我们生活在一个科技主导的世界。在这里,数据无处不在。作为许多不同产品的用户,我们所追寻的不再是某一个能将工作完成的最佳产品,而是一个不仅能有效完成工作,同时也与我们所使用的其他工具完美兼容的产品。因此,了解…

08-JVM垃圾收集器详解

上一篇:07-垃圾收集算法详解 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 虽然我们对各个收集器进行比较,但并非为了挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没…

Web安全研究(四)

No Honor Among Thieves: A Large-Scale Analysis of Malicious Web Shells Stony Brook University Ruhr-University Bochum 数据集地址:https://github.com/HACHp1/CWSOGG_dataset Web shell作为恶意脚本,攻击者将其上传到被攻陷的Web服务器&#xff…

iTunes备份文件在哪?苹果手机怎么恢复iTunes备份?

iTunes是苹果手机的一个常见应用,很多小伙伴都使用它来备份手机上的重要数据。通过iTunes备份数据到电脑后还可以进行随时管理和查看。itunes备份文件在哪?手机数据丢失怎么恢复iTunes备份?接下来,本文将给大家介绍一下&#xff0…

javaweb03-js基础

文本中涉及的一些基础介绍,不是全的。只写一些最常见、最经常使用的,其他的想了解可以自行查找资料。 前言: script引入 内部引用 script 外部引用 script:src 一、js语法 1.编写语法 (1)区分大小写,建议…

达之云BI平台助力中国融通集团陕西军民服务社有限公司实现数字化运营

中国融通集团陕西军民服务社是一家大型综合类零售购物中心,公司目前管理系统运行了10年左右,面临系统新零售支持发展严重滞后,行业主流应用落地困难,如线上业务、到家业务、全渠道营销、电子发票、自助收银、扫码购、无感停车、未…

拦截器失效和工具类中静态变量注入失败的问题

拦截器失效和工具类中静态变量注入失败的问题 文章目录 拦截器失效和工具类中静态变量注入失败的问题1.拦截器配置冲突2.路径配置错误3.关于工具类中Maper注入失效的问题解决办法1:手动赋值给静态变量 问题描述:项目中需要设置多个拦截器拦截不同路径&am…

【Java实战项目】【超详细过程】—大饼的图片服务器3(ImageDao类详解)

ImageDao详解 一、向数据库中写入图片属性1.与数据库建立连接2.创建并拼接SQL语句3.执行SQL语句4.定义异常类JavaImageServerException5.关闭数据库连接6.写入图片的完整代码 二、查找数据库中所有图片属性1.与数据库建立连接2.创建并拼接SQL语句3.执行SQL语句4.处理结果集5.关…

python+django吉他乐谱推荐交流网站的实现vue

而吉他乐谱推荐交流网站能很好地解决这一问题,轻松应对乐谱推荐,既能提高用户对乐谱评论,又能加快乐谱推荐交流网站的效率,取代人工管理是必然趋势。 本吉他乐谱推荐交流网站以Django作为框架,B/S模式以及MySql作为后台…

Vue错误记录

文章目录 1. 项目build的时候报错Warning: Accessing non-existent property cat of module exports inside circular dependency2. WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not …

嵌入式linux(imx6ull)下RS485接口配置

接口原理图如下: 由原理图可知收发需要收UART_CTS引脚控制,高电平时接收,低电平时发送。通过查看Documentation/devicetree/bindings/serial/fsl-imx-uart.yaml和Documentation/devicetree/bindings/serial/rs485.yaml两个说明文档,修改设备树…