数据存储文件的编写以及参数化的引用

参数化的步骤

1、编写数据存储⽂件 json
2、编写读取⼯具⽅法 read_json()
3、使⽤参数化组件进⾏引⽤ parametrize

编写参数化⽂件

⼼得:
1、根据模块来新建json⽂件(1个模块1个json⽂件)
2、最外侧使⽤{},模块下⼏个接⼝,编写⼏个key,值为列表
3、列表值中,有⼏组数据,就写⼏个{}.
4、每组数据{}中,组成格式:说明+参数+预期结果

{
  "img_code": [
    {
      "desc": "获取图片验证码成功(随机小数)",
      "random": 0.123,
      "expect_code": 200
    },
    {
      "desc": "获取图片验证码成功(随机整数)",
      "random": 123,
      "expect_code": 200
    },
    {
      "desc": "获取图片验证码失败(随机数为空)",
      "random": "",
      "expect_code": 404
    },
    {
      "desc": "获取图片验证码失败(随机数为字符串)",
      "random": "123hello",
      "expect_code": 400
    }
  ],
  "phone_code": [
    {
      "desc": "获取短信验证码成功",
      "phone": "13600001111",
      "imgVerifyCode": 8888,
      "expect_text": "发送成功"
    },
    {
      "desc": "获取短信验证码成功",
      "phone": "13600001111",
      "imgVerifyCode": 8889,
      "expect_text": "验证码错误"
    }
  ],
  "register": [
    {
      "desc": "获取短信验证码成功",
      "phone": "13600001111",
      "imgVerifyCode": 8889,
      "expect_text": "验证码错误"
    },
    {
      "desc": "注册失败(图片验证码错误)",
      "phone": 13600001112,
      "password": "test123",
      "verifycode": 8889,
      "phone_code": 666666,
      "expect_text": "验证码错误"
    },
    {
      "desc": "注册失败(短信验证码错误)",
      "phone": 13600001112,
      "password": "test123",
      "verifycode": 8888,
      "phone_code": 666667,
      "expect_text": "验证码错误"
    },
    {
      "desc": "注册失败(手机号已存在)",
      "phone": 13600001111,
      "password": "test123",
      "verifycode": 8888,
      "phone_code": 666666,
      "expect_text": "已存在"
    }
  ],
  "login": [
    {
      "desc": "登录成功",
      "keywords": 13600001111,
      "password": "test123",
      "expect_text": "登录成功"
    },
    {
      "desc": "登录失败(密码为空)",
      "keywords": 13600001111,
      "password": "",
      "expect_text": "不能为空"
    },
    {
      "desc": "登录失败(解锁)",
      "keywords": 13600001111,
      "password": "error123",
      "expect_text": "登录成功"
    }
  ],
  "login_status": [
    {
      "desc": "查询登录状态(已登录)",
      "status": "已登录",
      "expect_text": "ok"
    },{
      "desc": "查询登录状态(已登录)",
      "status": "未登录",
      "expect_text": "未登"
    }]
}

编写读取数据⼯具

在这里插入图片描述

#读取json文件
import json
import os

from config import DIR_PATH


def read_json(filename,key):
    # 拼接读取文件的完整路径 os.sep动态获取/ \
    file_path=DIR_PATH+os.sep+"data"+os.sep+filename
    arr=[]
    with open(file_path,"r",encoding='utf-8') as f:
        for data in json.load(f).get(key):
            arr.append(tuple(data.values())[1:])
    return arr

if __name__ == '__main__':
    read_json("register_login.json")

参数化引用

在这里插入图片描述
在这里插入图片描述

登录接口测试(错误次数锁定)

  • 版本01
        try:
            if "error" in password:
                pass
            else:
                #1.调用登录接口
                r=self.reg.api_login(keywords=keywords,password=password)
                #2.查看结果
                print(r.json())
                self.assertIn(expect_text, r.text)
  • 版本02
        try:
            i = 1  # 初始化计数器i为1
            r = None  # 初始化响应对象r为None

            # 如果密码中包含错误信息
            if "error" in password:
                # 循环尝试登录最多3次
                while i <= 3:
                    r = self.reg.api_login(keywords, password)  # 调用API登录方法
                    i += 1  # 计数器加1

                # 断言锁定
                print("测试锁定:", r.text)  # 打印响应文本
                self.assertIn("锁定", r.text)  # 使用断言确认响应文本中包含"锁定"信息

                # 暂停60秒
                sleep(60)

                # 测试登录成功
                r = self.reg.api_login(keywords="13600001111", password="test123")  # 使用正确的密码登录

                # 断言登录成功
                self.assertIn(expect_text, r.text)  # 使用断言确认响应文本中包含期望的信息

这段代码主要是进行登录测试,首先检查密码中是否包含错误信息,如果是,则进行最多3次的错误登录尝试。然后检查是否被锁定,等待60秒后再次进行登录测试,确保登录成功

查询状态接口(查询登录状态,不同结果)

@parameterized.expand(read_json("api_register_login.json", "login_status"))
    # 5.查询状态接口测试
    def test05_login_status(self, status,expect_text):
        try:
            if status == "login":
                # 1.调用登录接口
                self.reg.api_login(keywords="13600001111", password="test123")
            # 2.调用查询登录状态接口
            r = self.reg.api_login_status()
            # 3.看结果
            self.assertIn(expect_text, r.text)
        except  Exception as e:
            # 日志
            print(e)
            # 抛异常
            raise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值