51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4037|回复: 0
打印 上一主题 下一主题

[原创] Python接口测试实战|特殊字符集自动化测试

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2020-12-11 09:14:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     摘要:在当前互联网产品更新迭代的快节奏下,回归测试的时间被严重压缩,在金融领域和其他互联网应用场景下,支付、转账、清算往往是核心功能,为了确保资金安全和快速到账,接口在对用户名、账户名中的特殊字符的正确处理显得尤为重要。特殊字符极其丰富,手工测试往往需要耗费大量成本,接口自动化测试因其实现简单、维护成本低、容易提高覆盖率等特点,越来越受重视。Python由于可移植性好、第三方库丰富、上手简单而成为一种便捷高效的接口自动化测试工具。使用python向接口发送请求,一般包含以下步骤:
      1.请求的组装:请求信息一般包含接口的URL,以及一些其他可能需要的信息,比如headers,post请求需要用的data等;
      2.请求的发送:请求组装好后进行请求的发送,一般分为GET和POST方法,如果需要向接口传输数据,可以在data中传输,并获取返回数据;
      3.响应的解析:接收返回的数据并进行解析。
      Python实现了成熟的请求方法,目前新版的python3版本较好地支持第三方库requests,灵活组装请求,发送请求,获取响应信息,支持JSON、文件等多种数据传输格式。
      安装好requests后,导入,并简单组装一个get请求:

    1. #导入requests包
    2. import requests
    3. #接口URL,这里以一个虚拟网址为例
    4. url = ‘http://test.org’
    5. response = requests.get(url)
    6. print(response.txt)
    复制代码

    带有数据的post请求:
    1. [code]
    2. import requests
    3. url = <a href="http://test.org/post">http://test.org/post</a>
    4. data = '''{
    5.         "name": "张三",
    6.         "age": 18
    7.         }'''
    复制代码


    在日常接口测试中,经常需要设计反向案例验证接口对于异常场景的覆盖,比如对特殊字符的处理,依赖人工输入验证比较低效,利用python读取特殊字符集的账号,传入请求数据中,即可快速完成特殊字符集的接口测试,满足多种场景的测试。
    利用python的csv模块读取储存字符集的csv文件的方法如下:

    1. import csv

    2. with open('data.csv', 'r') as f:

    3. reader = csv.reader(f)

    4.     print(type(reader))

    5. for row in reader:

    6. print(row)
    复制代码

    下面以简单的汇款场景为例,进行特殊字符集的接口测试。首先构造接口的输入数据,以字典格式定义;读取特殊字符集,以列表储存;接下来就可以构造请求内容:遍历列表,替换账户名中的字符为特殊字符,发起请求,读取响应结果。具体步骤和代码如下。

    1. import requests, csv

    2. url = ‘http://kuahangzhuanzhang.org/post’

    3. #构造输入数据

    4. data = {

    5. “sendaccnm”: “王小林”,

    6. “sendaccno”: “1234567890”,

    7. “sendbkno”: “103100000026”,

    8. “recvaccnm”: “马小腾”,

    9. “recvaccno”: “2345678901”,

    10. “recvbkno”: “105100000017”

    11. }

    12. #定义列表,读取特殊字符集文件,列表储存

    13. li = []

    14. with open('data.csv', 'r') as f:

    15.     reader = csv.reader(f)

    16.     for row in reader:

    17.          li.append(row[0])

    18. #替换data中的数据,产生带有特殊字符的户名数据并发起请求

    19. for i in range(len(li)):

    20.     new_accnm = data.get("sendaccnm").replace(data.get("sendaccnm")[1],li[i])

    21.     data["sendaccnm"]=new_accnm

    22.     print(data)    #可打印一下替换后的数据

    23. response = requests.post(url=url, data=data)

    24. print(response.text)    #打印响应数据
    复制代码

    请求数据中,原账户名都已经被替换成带有特殊字符的账户名,对于生僻字、少数民族姓名、外国人姓名等含特殊字符的场景,实现了特殊字符的接口自动化测试。



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 06:15 , Processed in 0.065968 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表