首页 > 其他分享 >接口自动化之测试数据动态生成并替换

接口自动化之测试数据动态生成并替换

时间:2023-03-31 12:14:06浏览次数:45  
标签:return self random 接口 jst 测试数据 key 替换 def

一、测试数据

1. 随机库random

查看内置random方法,该方法自行学习,不再介绍。

show
print([name for name in dir(random) if callable(getattr(random, name))])

['Random', 'SystemRandom', '_Sequence', '_Set', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_exp', '_floor', '_log', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
 

 

2. Faker库

pip install faker

Https://github.com/joke2k/faker

show
from faker import Faker
f = Faker(locale='Zh-CN')

def random_string():
    """
    :return:随机生成字符串,20位
    """
    return f.pystr()


def random_ssn():
    """
    :return:随机生成省份中
    """
    return f.ssn()


def random_phone(self) -> int:
    """
    :return: 随机生成手机号码
    """
    return f.phone_number()


def random_id_card(self) -> int:
    """

    :return: 随机生成身份证号码
    """

    return f.ssn()


def random_female_name(self) -> str:
    """

    :return: 女生姓名
    """
    return f.name_male()


def random_male_name(self) -> str:
    """

    :return: 男生姓名
    """
    return f.name_female()

def random_email() -> str:
    """

    :return: 生成邮箱
    """
    return f.email()

def random_int():
    """随机生成 0 - 9999 的数字"""
    return f.random_int()

3. 应用到项目中

3.1 思路

  1. 在用例数据中添加标志位,设计这个标志位为

    {{特殊的变量名}}

    ,例如生成手机号码的标志位为

    {{ phone_number }}
    • 什么字段里有可能有这个标志

      • request_data

      • sql

      • url

      • header
      • expected
  2. 检查用例数据,如果出现了标志则动态生成对应数据并替换

3.2 用例数据修改

def replace_dependent_parameter(self, jst):
        """
        替换字符串中的关联参数,并返回转化后的字典格式。
        Args:
            jst: 包含接口参数的字符串
        Returns:转换后的字典或原始字符串
        """
        if not jst:
            return jst
        jst = json.dumps(jst) if isinstance(jst, (dict, list)) else jst
        # 替换
        while self.PATTERN.search(jst):
            key = self.PATTERN.search(jst).group()
            # 字符串替换
            if key in self.dependence.keys():
                jst = jst.replace(key, str(self.get_dependent_value(key)))
                logger.my_log(f"key:{key},替换成功:{self.get_dependent_value(key)}")
            else:
                logger.my_log(f"key:{key},在关联参数表中查询不到,请检查关联参数字段提取及填写是否正常\n")
                break
                jst = jst.replace("True", "true").replace("False", "false")
        if self.pattern.search(jst):
            try:
                jst = json.loads(jst)
            except json.JSONDecodeError as e:
                logger.my_log(f"JSONDecodeError:{jst}:{e}")

        return jst

 

标签:return,self,random,接口,jst,测试数据,key,替换,def
From: https://www.cnblogs.com/Nephalem-262667641/p/17275874.html

相关文章

  • node express自动生成swagger(openApi)接口文档
    先看效果图:   实现步骤:1.安装所需的包npminstallswagger-jsdocswagger-ui-express2.新建文件swagger.js//swagger在线网站:https://editor.swagger.io/#constswaggerJSDoc=require('swagger-jsdoc')constswaggerUi=require('swagger-ui-express')......
  • 使用PHP调用OpenAI ChatGPT API接口
    本文介绍如何使用PHP调用OpenAI的文本完成模型ChatGPT的API接口,同时也包括图片生成模型DALL·E接口的调用。 一、SDK实现OpenAI的PHPSDK实现如下,其中ChatGPT使用的模型为gpt-3.5-turbo,如果已经有ChatGPTPlus,并申请到GPT-4的API权限,可以改为GPT-4的模型。classclass_openai......
  • 网页接口偶发性502的问题
    现象:网页接口一直偶发性502,概率大概20%左右 排查过程:架构是用户->WAF->lvs->NGINX->后端 1、尝试减少接口请求,依然会502,可知和接口服务能力无关。2、WAF侧,更换服务IP,依然不行,可知不是WAF某个节点网络有问题。3、Nginx侧,查看日志,并未发现502日志,可知502的请求没到nginx,怀......
  • C#: IDisposable接口
    在C#中,IDisposable接口用于释放非托管资源。非托管资源是指由操作系统或其他非托管代码创建的资源,如文件句柄、数据库连接、网络连接等。这些资源不受垃圾回收器的管理,因......
  • 自定义注解方式接口防刷实现
    原作前言本文为描述通过Interceptor以及Redis实现接口访问防刷Demo这里会通过逐步找问题,逐步去完善的形式展示原理通过ip地址+uri拼接用以作为访问者访问接口区......
  • 浅谈关于ERP上货需要使用的API接口及应用场景分析
    ERP(EnterpriseResourcePlanning)系统是一个非常重要的企业管理系统,它可以帮助企业实现全面的生产、销售、采购、库存和财务管理等方面的全面分析和控制。在这篇报告中,我......
  • lamda表达式?实现函数式接口的缩写
    don'tworry~lamda表达式其实很简单@FunctionalInterfacepublicinterfaceMyInterface{voidprint();}对于一个函数式接口,若想要实现其抽象方法,或许有两种......
  • 请求需要登录的接口
    <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependenc......
  • TIdHTTPWebBrokerBridge替换成mormot底层
    目前使用案例是git开源项目horse改动思路大概为http请求被WebBrokerDispatch函数转发到了WebModule中进行后续处理。替换如下单元源码即可将horse项目的indy底层改成morm......
  • 拼多多商品列表接口,关键词搜索拼多多商品接口,拼多多优惠券接口代码封装教程
    业务场景:作为全球最大的B2C电子商务平台之一,拼多多平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入拼多多平台,拼多多平台提供了丰富的API接口......