栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python自动化测试23】接口自动化测试实战三

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python自动化测试23】接口自动化测试实战三

文章目录

一、前言

二、动态参数化
三、数据伪造

一、前言

  本文章主要会讲解接口测试中用例设计的动态参数化形式,除此之外下方有系列文章的传送门,还在持续更新中,感兴趣的小伙伴也可以前往查看,话不多说,让我们一起看看吧~

系列文章:
  系列文章1:【Python自动化测试1】遇见Python之美
  系列文章2:【Python自动化测试2】Python安装配置及PyCharm基本使用
  系列文章3:【Python自动化测试3】初识数据类型与基础语法
  系列文章4:【Python自动化测试4】字符串知识总结
  系列文章5:【Python自动化测试5】列表与元组知识总结
  系列文章6:【Python自动化测试6】字典与集合知识总结
  系列文章7:【Python自动化测试7】数据运算符知识合集
  系列文章8:【Python自动化测试8】流程控制语句讲解
  系列文章9:【Python自动化测试9】函数知识合集
  系列文章10:【Python自动化测试10】文件基础操作
  系列文章11:【Python自动化测试11】模块、包与路径知识合集
  系列文章12:【Python自动化测试12】异常处理机制知识合集
  系列文章13:【Python自动化测试13】类、对象、属性与方法知识合集
  系列文章14:【Python自动化测试14】Python自动化测试基础与进阶练习题
  系列文章15:【Python自动化测试15】unittest测试框架的核心概念与作用
  系列文章16:【Python自动化测试16】测试用例数据分离
  系列文章17:【Python自动化测试17】openpyxl二次封装与数据驱动
  系列文章18:【Python自动化测试18】配置文件解析与实际应用
  系列文章19:【Python自动化测试19】日志系统logging讲解
  系列文章20:【Python自动化测试20】接口自动化测试框架模型搭建
  系列文章21:【Python自动化测试21】接口自动化测试实战一_接口概念、项目简介及测试流程问答
  系列文章22:【Python自动化测试22】接口自动化测试实战二_接口框架修改及用例优化

  

二、动态参数化

  举个例子,我们在设计一个注册接口测试用例的时候,会碰到一个明显的瓶颈,该手机号是未进行注册的,在第一次执行自动化测试用例时能够成功的完成注册,但在第二次再次执行测试用例时会发现,手机号已存在,那么二次执行该测试用例就会执行失败,而面对这种情况,有以下几个解决思路:

"""
解决思路:
1、每一次通过手动的方式打开excel删除后重新输入一个新的手机号
2、在数据库中查询该手机号,如果该手机号已存在,那么在数据库进行手机号删除
3、在现有的手机号上的最末尾数+1
4、随机生成一个手机号

思路分析:
1、第一种方式虽然能够解决,但每一次执行时都需要人工手动的去替换,不便于维护
2、虽然能查询并删除手机号,但往往真实的项目不会轻易的做数据库删除操作,并且一个已注册手机号会有表关联,且大多数情况下测试无权限进行删除
3、这也是一个解决方式,我们可以在第11位数字上,每次都+1,弊端是终究会碰到可能会和其他手机号相冲突的号码从而执行失败,但效率远高于1和2
4、最后的方式也是动态参数化,在需要替换的数据上做标记,当循环遍历到这个标记时使用随机生成的号码替换这个标记,以在执行用例时能够顺利通过

"""

  动态参数化就是为了解决这一类的问题,让手机号持续性的随机变更,让每一次的执行都不会因为手机号的重复而导致用例失败(使用动态参数化仍然可能会随机到已注册的号码,但概率极低),而随机生成某一个手机号码就需要用到数据伪造。

  

三、数据伪造

  在自动化测试领域中数据伪造并非是什么破坏系统安全的事情,而是希望能够自动化生成测试用例的数据且数据符合一定的规则,例如手机号,电子邮箱等等。数据伪造安可以用在自动化注册模块,也可以用于登录或其他文本输入框来检测一定的输入规则等。

  在Python中进行数据伪造库 – faker库,通过pip先进行安装后即可:

import faker

# 初始化faker对象,指定生成规则区域为中国
fk = faker.Faker(locale="zh_CN")
result = fk.phone_number()
print(f"手机号:{result}")

# 随机生成一个地址
company = fk.company()
print(f"地址:{company}")

# 随机生成一个公司
address = fk.address()
print(f"公司:{address}")

# 随机生成一个城市
city = fk.city()
print(f"城市:{city}")

  除了标准的伪造库能够提供伪造外,我们也可以使用自己期望的方式来制定一个规则:

def generate_new_phone():
    phone = "1" + random.choice(["3", "5", "7", "8", "9"])
    for i in range(9):
        num = random.randint(0, 9)
        phone += str(num)
    return phone


print(f"函数式手机号:{generate_new_phone()}")

  简易的封装伪造库函数,如果你是在框架中写数据伪造的代码,那么可以放在common中,从common中在导入以此来生成一些数据:

import faker

def generate_new_phone():
    fk = faker.Faker(locale="zh_CN")
    result = fk.phone_number()
    return result
# 改动后的片段代码(如对片段代码有疑问,请参考前置文章):
@ddt
class TestLogin(unittest.TestCase):
    @list_data(data)
    def test_login_success(self, case_data):
        json_data = case_data["json"]
        if "#new_phone#" in json_data:
            new_phone = data_forgery.generate_new_phone()
            json_data = json_data.replace("#new_phone", new_phone)

  
  

  好啦~以上就是本次文章分享的全部内容啦,你学会了吗?希望能给大家带来帮助哦!

  
  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号