神奇,Python功能测试全代码演示实例

点击上方“AI派”,选择“设为星标

最新分享,第一时间送达!

640?wx_fmt=jpeg

640?wx_fmt=gif

作者:郑明卓,Python研发工程师,在Python开发与爬虫方面涉猎较广,拥抱新技术。目前负责应用技术调研与开发维护。Now is better than never。

编辑:王老湿

说在开头,这篇文章是来自我们的一位读者朋友创作的内容,他将他自己在Python方面的实践经验总结成一些文章,然后分享给大家。好了,开始我们的分享吧。

大家想想一个场景,假定我们在工作中开发了一个接口,因为接口需要增加一些功能,所以更改了一些代码。那么修改的代码会不会对之前的功能有影响呢?

为了解决这个问题,测试就来了。作为开发人员,也可以编写一些测试代码,因为良好的编写测试习惯,持续地写测试写文档写代码是必备的。

有了测试代码后,更改(重构)代码也更加方便,因为只需要用相同的测试代码即可来对功能做一个检查即可。此外,编写测试还能提升代码的可读性,因为一些测试代码也是功能的描述。

编写功能测试的目的

  1. 验证应用的行为和期望一致的测试

  2. 确认异常修复的测试(增加测试覆盖率)

测试的分类
  1. 单元测试(unit test)# 主要测函数

  2. 功能测试(function test)# 主要测某些代码段完整的功能

  3. 集成测试(integration test)  # 主要在线上环境测试

  4. 负载/压力测试 (load test)  # 大家比较熟悉

  5. 端到端测试 (end-to-end test) # 完整的测试产品

本文主要讲解功能测试实例的编写。

在python中编写功能测试代码

主要分为两部分,客户端测试和服务器端测试。

功能测试组要注意的点:功能测试都不占用网络服务资源,请求都直接模拟网络资源

客户端测试可以用在哪里呢?爬虫调用第三方的接口(OSS, 数据库, AI服务等)

PS: 为了提升代码质量,所有代码都会使用静态注释,你的python version 需要 >= 3.5

如何实现网络资源请求的模拟呢?这时候,我们的 mock 就要出场了。

1. 客户端测试 request_mock

首先,我们编写一个简单的客户端,当作我们用来测试的客户端 client.py,代码如下:

import typing
from urllib import parse

import requests


MyResponse = typing.Dict[str, typing.List[str]]


class MySpider:
    """拼接返回的id"""
    def __init__(self, url="http://example.com") -> None:
        self.url: str = url
        self.return_base_url: str = "http://shop.com/id/"

    def get_data(self):
        try:
            response: requests.Response = requests.get(self.url)
        except requests.exceptions.ConnectionError:
            # 链接超时
            return self._handle_data()
        else:
            response.raise_for_status()  # 检查请求状态值200
        data = response.json()
        return self._handle_data(data)

    def _handle_data(self, data=None) -> MyResponse:
        """处理请求的数据"""
        if data:
            return_data: typing.List[str] = []
            all_id = data.get("all_id", [])
            for goods_id in all_id:
                return_data.append(parse.urljoin(self.return_base_url, goods_i
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值