web接口开发与测试——你了解多少

这篇具有很好参考价值的文章主要介绍了web接口开发与测试——你了解多少。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

Django快速开发之投票系统

编写接口文档

系统接口测试

总结:


前言

最近一直在学习和整理web开发与接口测试的相关资料。接口测试本身毫无任何难度,甚至有很多工具和类库来帮助我们进行接口测试。大多测试人员很难深入了解web接口测试的原因是对web开发不太了解,当你越了解开发就会越看得清接口是什么。当然,web开发是比较麻烦,我们很难一下子掌握。

注:不过本文并不是一个零基础的文章,需要你对 Django web开发,requests接口库,unittest单元测试框架,三者有一定的了解。

Django快速开发之投票系统

  之前分享过一篇Django开发投票系统的例子。今天在这个例子上做一些延伸,来讲讲web接口的开发与测试。

开发投票系统接口

  虽然投票系统的的功能已经开发完成,但我们并没有开发专门的接口,在当前的投票系统中,在我们调用一个get或post请求时,系统会返回整个页面,并且把测试连同页面一起返回。

web接口开发与测试——你了解多少,软件测试,前端,集成测试,单元测试,pycharm,python,自动化测试

  例如,当我们要调用所有问题的接口时(test_get.py)

import requests

base_url = 'http://127.0.0.1:8000/polls'
r = requests.get(base_url)
code = r.status_code
text = r.text
print(code)
print(text)

得到如下结果:

200

<html lang="zh-CN">
  <head>
    <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    
  </head>
  <body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Polls System</a>
        </div>
      </div>
    </nav>

    <br><br>
   <div class="well">
      <h3>Question List:</h3>       
          <ul>
             <li><a href="/polls/1/">十一国庆七天假期做什么?</a></li>
             <li><a href="/polls/2/">你最想学的自动化工具是什么?</a></li>
          </ul>
    </div>

      <footer>
        <p>&copy; Company 2016 & chongshi</p>
      </footer>

  </body>
</html>

  而特有的接口应该返回的是数据,而不是整个页;而数据一般格式为Json格式。所以,需要对试图层(.../polls/views.py)进行改造,使其只提供接口,并单纯的返回数据。

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from .models import Question, Choice
from django.http import HttpResponse
import json


# Create your views here.
# 查看所有问题
def index(request):
    latest_question_list = Question.objects.all()
    dicts = {}
    if latest_question_list:
        for question in latest_question_list:
            dicts[question.id] = question.question_text
        j = json.dumps(dicts)
        return HttpResponse(j)
    else:
        return HttpResponse("question list null")


# 查看单个问题选项
def detail(request, question_id):
    choices = Choice.objects.filter(question_id=question_id)
    dicts = {}
    print(question_id)
    if question_id:
        for choice in choices:
            dicts[choice.id] = choice.choice_text
        j = json.dumps(dicts)
        return HttpResponse(j)

.....

  为了节省时间,暂时先对查看所有问题、单个问题的所有选项两个功能进行接口改造,当然这里的改造也不够完整和健壮。例如单个问题的所有选项的接口,接收的参数question_id 如果为空,应该提示,参数错误。如果查询不到相关问题,应该提示,查询结果为空,如果传的类型不为数字,应该提示,类型错误。这些都是一个健壮的接口应有的处理逻辑。

再次执行test_get.py文件。

200

{"1": "\u5341\u4e00\u56fd\u5e86\u4e03\u5929\u5047\u671f\u505a\u4ec0\u4e48\uff1f", "2": "\u4f60\u6700\u60f3\u5b66\u7684\u81ea\u52a8\u5316\u5de5\u5177\u662f\u4ec0\u4e48\uff1f"}

  这一次得到的就是json类型的数据了。不过,返回值对中文进行了unicode的编码。这里提供个小技巧,将其转换成中文。

  打开Firefox浏览器的Firebug工具,切换到“控制台”标签。

web接口开发与测试——你了解多少,软件测试,前端,集成测试,单元测试,pycharm,python,自动化测试

编写接口文档

  编写接口文档也是非常重要的一个环节,因为我们编写的接口是需要给别人调用的,那么别人如何知道我们的接口是用get还是post调用呢?参数都有哪些?当然需要参考接口文档了。

1、获取所有问题

url

http://127.0.0.1:8000/polls

请求类型

get

需要参数

返回格式

json

返回结果

{"1": "十一国庆七天假期做什么?",

"2": "你最想学的自动化工具是什么?"

}

错误类型

暂无(接口代码需要补充逻辑)

2、获取单个问题的所有选项

url

http://127.0.0.1:8000/polls/

请求类型

get

需要参数

question_id

返回格式

json

返回结果

{"1": "旅行",

"2":"看电影" ,

"3":"看书"

}

错误类型

暂无(接口代码需要补充逻辑)

……

  好啦!接口文档的大体结构就是上面的样子。有了这个份文档,我们接下来就很容易知道如何调用这些接口做测试了。

系统接口测试

  对于编写接口测试来说,我们会涉及到两个技术。前面也都有过简单介绍,unittest单元测试框架和request库。

import unittest
import requests


class PollsTest(unittest.TestCase):

    def setUp(self):
        self.base_url = 'http://127.0.0.1:8000/polls'
    
    def tearDown(self):
        pass
    
    def test_get_poll_index(self):
        '''测试投票系统首页'''
        r = requests.get(self.base_url)
        code = r.status_code
        text = r.text
        self.assertEqual(code, 200)


    def test_get_poll_question(self):
        '''获得问题1的所有选项'''
        r = requests.get(self.base_url+'/1/')
        code = r.status_code
        text = r.text
        self.assertEqual(code, 200)
        self.assertIn("3",text)

if __name__ == '__main__':
    unittest.main()

  接口用例测试本身的编写是简单的,我们只用调用接口,传递不同的参数。从而验证返回值是否符合预期即可。文章来源地址https://www.toymoban.com/news/detail-518872.html

web接口开发与测试——你了解多少,软件测试,前端,集成测试,单元测试,pycharm,python,自动化测试

到了这里,关于web接口开发与测试——你了解多少的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27045 使用场景 对应事件 复制粘贴 键盘事件 拖动元素到某个位置 鼠标事件 鼠标悬停 鼠标事件 滚动到某个元素 滚动事件 使用触控笔点击 触控笔事件(了解即可) https://www.selenium.dev/documentati

    2024年02月09日
    浏览(101)
  • 软件测试/测试开发丨Web自动化 PageObject设计模式

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27167 马丁福勒个人博客 selenium 官网 无法适应 UI 频繁变化 无法清晰表达业务用例场景 大量的样板代码 driver/find/click 降低 UI 变化导致的测试用例脆弱性问题 让用例清晰明朗,与具体实现无关 字

    2024年02月10日
    浏览(54)
  • 软件测试/测试开发丨Selenium Web自动化多浏览器处理

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27185 用户使用的浏览器(firefox,chrome,IE 等) web 应用应该能在任何浏览器上正常的工作,这样能吸引更多的用户来使用 是跨不同浏览器组合验证网站或 web 应用程序功能的过程 是兼容性测试的一个

    2024年02月09日
    浏览(64)
  • 软件测试岗位,真正达到月收入1万以上的有多少?

    软件测试工程师工资有多高?我想说拿4k-30k的都有,因为软件测试工程师的薪资水平是受各种因素影响的,比如:所在城市、个人工作能力、技能掌握情况、工作年限等等都有很大关系,这是要根据每个人的具体情况而定的。 记得在某一线城市有位阿姨给自己是程序员的孩子

    2023年04月19日
    浏览(42)
  • 100道软件测试练习题,看看你能有多少分

    软件测试与质量保证-软件测试部分练习题 1单选(2分) 软件测试用例主要由输入数据和_________两部分组成。 A.预期输出结果2.00/2.00 B.测试计划 C.以往测试记录分析 D.测试规则 2单选(2分) 与设计测试用例无关的文档是_________。 A.项目开发计划2.00/2.00 B.源程序 C.需求规格说明书 D

    2024年02月05日
    浏览(40)
  • 软件测试工程师面试应对如何估算要写多少条测试用例,耗费多长时间?

    作为测试工程师,对测试用例的数量预估是一项基本能力,并且也很重要。因为在衡量和预报工作计划中十分重要,例如,设计用例需要几天,设计多少条、执行多长时间。 首先,预估测试用例数量最重要的依据就是需求。比如下面的这个软件设计界面和需求: 需求: 会员

    2024年02月04日
    浏览(53)
  • 50岁程序员还奋战在一线,软件测试能干到多少岁?有年龄限制吗?

    ​软件测试能干到多少岁?有年龄限制吗?做软件测试工程师能干到多少岁这个问题无异于人能活到多少岁,很多事情是不可预估,要解答这个问题只能从行业就业人员的平均年龄和软件测试在未来的发展情况来分析。 有第三方市场就业调查数据显示,目前超过35岁的测试工

    2024年02月08日
    浏览(48)
  • 软件测试基础(五) 之 了解测试团队的组织架构

    今天来了解一下软件测试团队的组织架构模式到底是什么样子。   一个公司软件测试的组织架构,可能会决定你未来的成长空间,同时也决定了我们的工作模式到底是什么样子。   现在测试行业内通常测试团队的组织架构主要分成两种, 一种叫做金字塔式管理模式,一

    2024年02月07日
    浏览(46)
  • 软件测试|MySQL LIKE:深入了解模糊查询

    简介 在数据库查询中,模糊查询是一种强大的技术,可以用来搜索与指定模式匹配的数据。MySQL数据库提供了一个灵活而强大的LIKE操作符,使得模糊查询变得简单和高效。本文将详细介绍MySQL中的LIKE操作符以及它的用法,并通过示例演示其功能。 基本语法 MySQL中的LIKE操作符

    2024年02月02日
    浏览(52)
  • 软件测试 | websocket接口测试

    简介 WebSocket 是一种在单个 TCP 连接上进行全双工通信(Full Duplex 是通讯传输的一个术语。通信允许数 据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进 行信号的双向传输( A→B 且 B→A )。指 A→B 的同时 B→A,是瞬时同步的

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包