首页 > 其他分享 >接口测试系列文章4——10分钟带你利用测试框架优化接口测试

接口测试系列文章4——10分钟带你利用测试框架优化接口测试

时间:2023-09-27 11:06:30浏览次数:39  
标签:__ 10 code unittest 单元测试 接口 测试


在实际工作中,我们利用单元测试框架就可以完全搞定接口测试。单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类。单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被测试的软件如何完成功能和完成什么样的功能。在python中unittest、pytest模块就是单元测试的一种具体表现形式。

单元测试的范围

• 接口功能测试

• 边界条件测试

• 所有独立执行通路测试

• 各条错误处理通路测试

• 静态代码分析

其中,前两项接口功能测试和边界条件测试就是我们熟知的接口测试!而对于后三项通常都是开发人员通过工具辅助自测完成的,常用的工具括:Sonar、PMD、FindBugs、Checkstyle、Jacoco等等(好多工具都集成到IDE中,开发人员使用非常方便)。

单元测试引入的原因

单元测试提供快速反馈,把bug消灭在开发阶段,减少问题流到集成测试、验收测试和用户,降低了软件质量控制的成本。
不同的开发语言都有对应的单元测试框架

Java Junit3\Junit4\Junit5\TestNG
Python unittest\pytest
C++ CppUnit
.net Nunit
JavaScript Qunit

接口测试在单元测试中的应用

我们以unittest为例讲解,unittest是Python单元测试框架,类似于JUnit框架。基本用法如下:

1)import unittest

2)定义一个继承自unittest.TestCase的测试用例类

3)定义setUp和tearDown,在每个测试用例前后做一些辅助工作。

4)定义测试用例,名字以test开头

5)一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。

6)调用unittest.main()启动测试

下面举个实例,来看看unittest如何测试一个简单的函数

测一个简单的加法接口

def add(a, b):

       return a + b

import unittest

class TestAddFunc (unittest.TestCase):

       def test_add1(self):

              self.assertEqual (3, add (1, 2))

       def test_add2(self):

               self.assertEqual (4, add (1, 1))

if __name__ == '__main__':

    unittest.main ()

在pycharm中运行,结果如下:

接口测试系列文章4——10分钟带你利用测试框架优化接口测试_单元测试


把校验get请求的接口测试代码移植到unittest中

源码:

import requests

import json

req="http://rap2api.taobao.org/app/mock/85630/getinfo"

response=requests.get(req)

print(response.text)

code=json.loads(response.text).get('code')

print(code)

if code <=10:

      print ("reponse ok")

else:

      print("reponse fail")

移植后的代码

import requests

import json

import unittest

class TestGetFunc (unittest.TestCase):

     def test_1(self):

        req ="http://rap2api.taobao.org/app/mock/85630/getinfo"

        response = requests.get(req)

         print(response.text)

        code = json.loads(response.text).get('code')

        self.assertLessEqual(code, 10)

if __name__ == '__main__':

    unittest.main()

通过代码实现接口测试非常的简单,他帮我们定义了用例的规则(test开头的方法就是测试用例),给我们提供了断言assertLessEqual(用来判断用例的通过与否),代码执行后提供了测试执行的结果!

断言

在测试框架中都是通过断言来判定用例通过与否的(比if…else…方便很多),unittest中提供很多方法进行断言相关操作,具体如下:

基础断言

接口测试系列文章4——10分钟带你利用测试框架优化接口测试_接口_02


exceptions, warnings, 日志信息断言

接口测试系列文章4——10分钟带你利用测试框架优化接口测试_unittest_03

特殊断言

接口测试系列文章4——10分钟带你利用测试框架优化接口测试_测试用例_04

集合断言

接口测试系列文章4——10分钟带你利用测试框架优化接口测试_测试用例_05


当然这只是最简单的demo实例,目的是教大家入门!unittest中还有很多强大的功能来支持我们做单元测试工作,由于本文是针对小白,所以这里就不再详细介绍了!如果你想了解更多关于python单元测试的知识可以阅读下面两篇文章:

上手unittest读这篇文章就够了

从0到1上手Pytest

原创不易,如果文章帮到了你,欢迎转发,让更多的朋友受益!


标签:__,10,code,unittest,单元测试,接口,测试
From: https://blog.51cto.com/liwen629/7621638

相关文章

  • 接口测试系列文章1——接口测试的核心概念
    开发口中的接口是什么?我相信绝大多数测试同学听闻“接口”二字都源于开发同学。书本中的标准接口定义叫Interface,在JAVA编程语言中接口是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过implements关键字实现接口,从而来重写接口中的抽象方法。例如:interface......
  • 接口测试系列文章2——接口测试面试必问的知识点(建议收藏)
    面试的本质我们每个人或多或少都经历过大大小小的各种面试,少则几次多着几十次,更甚者上百次,那么我们大家是否思考过,面试招聘对于企业来讲究竟意味着什么吗?有的同学会说,当然就是招人干活喽!不错!但是本质上面试是企业自我输血的过程。第一,血型匹配度?也就是价值观和企业是否一致。第二,拥......
  • 微服务测试的关键——通过ELK查询日志
    为什么需要ELK一般我们在工作中查询日志搜索问题时,通常需要直接在日志文件中进行grep、awk操作就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。随着微服务的广泛应用,无论系统日志,还是业务日......
  • 读懂这篇文章,就掌握微服务测试核心了!
    最近我写了四篇关于微服务测试的文章,本文介绍微服务测试的核心点,前面三篇分别介绍了:入门微服务必须了解的概念一文搞定微服务测试本质微服务负载的重要性微服务性能测试的关键——IP欺骗技术微服务如何查询应用日志微服务测试的关键——通过ELK查询日志相信这几篇文章一定会帮助......
  • 五分钟理解什么是自动化测试架构设计
    自动化测试常见的问题如下:1)产品UI经常变化,导致测试脚本不能复用。(2)测试脚本不够健壮,导致脚本回放时,测试脚本本身经常出错。(3)网络延迟,数据加载延迟造成测试脚本失败。(4)识别对象的ID可读性差,导致测试脚本的可读性差。(5)录制的测试代码过于庞大而且应变性差,导致测试脚本的复用......
  • 测试同学必须熟悉的python模块
    测试同学在进行python的面试过程中,必问的问题是你最常用的python模块有哪些?这些模块解决了你工作中的哪些问题?在这里我把测试同学在实际工作中常用的py模块进行了汇总,本文编写的目的是对各个模块的功能进行概要介绍并没有提供具体api的使用方法,如果大家想要深入了解各个模块api的具......
  • Jmeter场景组合测试——多个线程组的设计方案
    我们绝大多数同学在使用jmeter进行性能测试时都会在一个线程组中完成测试工作,今天我来重点讲解一下jmeter多个线程组在测试中的应用,这也是关于jmeter性能测试面试过程中的进阶问题,希望能够帮到大家来解决工作中不同的测试需求。线程组中的线程执行顺序是什么?首先大家需要明确一......
  • 测试技能提升篇——一文理解消息中间件里那些通用的核心概念
    我们测试同学在实际工作中或多或少都会接触过ActiveMQ、RabbitMQ,Kafka,和RocketMQ这类消息中间件产品,不同的公司会选择不同的产品,大家可能会觉得产品比较多,了解起来有些复杂!其实无论使用哪种中间件产品,他们的核心功能都是比较类似的。本文就不来汇总一下中间件产品的核心概念,给大家......
  • 测试技能提升篇——Docker的核心概念
    Docker已经不是什么新技术了,相信绝大多数同学在实际工作中都会对其有一定的了解,使用一些常用的命令行执行一些操控容器的基础操作,这方便的网络资源实现太多了,在这里就不进行相关讲解了。本文重点介绍一下涉及Docker的相关概念以及其核心组件的作用,相信会帮助想要深入研究Docker的同......
  • 测试技能提升篇——脏读、不可重复读、幻读的区别
     脏读事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据不可重复读事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。脏读与不可重复读的区别在于前者读到的是其他事务未提交的数据,后者读到的......