接口自动化测试总结

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

软件需求变动不频繁

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

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

项目周期较长

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

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

  自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如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.htmlreport_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.hqwc.cn/news/102888.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【web开发】4.JavaScript与jQuery

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、JavaScript与jQuery二、JavaScript常用的基本功能1.插入位置2.注释3.变量4.数组5.滚动字符 三、jQuery常用的基本功能1.引入jQuery2.寻找标签3.val、text、appe…

yo!这里是进程控制

目录 前言 进程创建 fork()函数 写时拷贝 进程终止 退出场景 退出方法 进程等待 等待原因 等待方法 1.wait函数 2.waitpid函数 等待结果(status介绍) 进程替换 替换原理 替换函数 进程替换例子 shell简易实现 后记 前言 学习完操作…

校园二手物品交易系统微信小程序设计

系统简介 本网最大的特点就功能全面,结构简单,角色功能明确。其不同角色实现以下基本功能。 服务端 后台首页:可以直接跳转到后台首页。 用户信息管理:管理所有申请通过的用户。 商品信息管理:管理校园二手物品中…

2023-9-8 求组合数(三)

题目链接&#xff1a;求组合数 III #include <iostream> #include <algorithm>using namespace std;typedef long long LL;int p;int qmi(int a, int k) {int res 1;while(k){if(k & 1) res (LL) res * a % p;k >> 1;a (LL) a * a % p;}return res; }…

Android MQTT:实现设备信息上报与远程控制

Android MQTT&#xff1a;实现设备信息上报与远程控制 1. 介绍 1.1 MQTT是什么&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;最初由IBM开发&#xff0c;用于连接远程设备与服务器之间的通信。它在物…

Linux目录结构和远程使用

目录名作用根目录 ‘/’文件系统结构的起始点/root系统管理员的工作目录/home普通用户工作目录/bin存放二进制可执行文件&#xff0c;存放最经常使用的命令/sbin系统管理员使用的系统管理程序/boot启动linux时使用的一些核心文件/dev设备文件&#xff0c;包括块设备和字符设备/…

CPU 伪共享是如何发生的?又该如何避免?

CPU 如何读写数据的&#xff1f; 先来认识一下 CPU 的架构 一个 CPU 里通常会有多个 CPU 核心&#xff0c;并且每个 CPU 核心都有自己的 L1 Cache 和 L2 Cache&#xff0c;而 L1 Cache 通常分为&#xff08;数据缓存&#xff09;和&#xff08;指令缓存&#xff09;&#xff0…

STM32 Nucleo-144开发板开箱bring-up

文章目录 1. 开篇2. 开发环境搭建2.1 下载官方例程2.2 ST-Link安装 3. STM32F446ZE demo工程3.1 STM32F446ZE简介3.2 跑个demo试一试 1. 开篇 最近做项目&#xff0c;用到STM32F446ZET6这款MCU&#xff0c;为了赶进度&#xff0c;前期软件需要提前开发&#xff0c;于是在某宝买…

SQL函数

函数 字符串函数数值函数日期函数流程函数 字符串函数 常用函数&#xff1a; 函数功能CONCAT(s1, s2, …, sn)字符串拼接&#xff0c;将s1, s2, …, sn拼接成一个字符串LOWER(str)将字符串全部转为小写UPPER(str)将字符串全部转为大写LPAD(str, n, pad)左填充&#xff0c;用…

NLP(3)--GAN

目录 一、概述 二、算法过程 三、WGAN 1、GAN的不足 2、JS散度、KL散度、Wasserstein距离 3、WGAN设计 四、Mode Collapse and Mode Dropping 1、Mode Collapse 2、Mode Dropping 3、FID 四、Conditional GAN 一、概述 GAN&#xff08;Generative Adversial Networ…

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

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

Java基于 SpringBoot 的车辆充电桩系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1、效果演示效果图技术栈 2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1 …