进阶之路--从0开始学接口测试(5)-用例参数动态化(注册接口)

注册接口自动化测试已经实现的功能:

整个框架已经实现了流程的正常运行.ddt,运行,收集用例,测试报告

存在问题:

注册问题

注册只能注册一次.如果直接写在excel中,第二次运行用例会提示号码已存在,而且全量预期结果也只能在注册成功之后才能获取id,所以注册之前不能知道id,导致预期结果和实际结果不相符

解决方法:

1,号码递增

每次增加1,可能会出现号码不支持,比如182xxxx9999,如果加1之后变成183xxxx0000,但是并没有这个号

2,清库

别人也会使用这个数据库,会导致把别人需要的手机号或者其他数据也清除,一般不会删库,公司也不一定会有删除权限

3,随机生成号码

(生成各种随机数据)

封装成函数,放到common文件夹中

用例参数动态化

在excel中,把需要生成手机号的用例(注册成功)的数据做成标记

 检测json中是否存在标记,如果标记存在,则需要生成随机号码

-获取json的数据(字符串)

 -判断字符串是否存在指定标记,如果存在,则调用生成随机号函数替换原先字符串

      json_data= test_data["json"]

        if "#mobile_phone#" in json_data:
            mobile = generate_mobile()
            #重新赋值
            json_data = json_data.replace("#mobile_phone#",mobile)

-把字符串通过反序列化转换成字典

json_data = json.loads(json_data)

测试报告展示不覆盖

解决方法:

生成时间戳

默认的report.html,需要改成report-2021-10-23-20-18.html

填入filename,生成测试报告的名称

1.获取现在的时间戳

from datetime import datetime

ts = datetime.now().strftime("%Y-%m-%d-%H-%M-%S")

 注意:月份(m),分钟(M),天(d)

2.字符串拼接f”report-{ts}.html,如果不是自动生成reports文件夹,还需要手工拼接f”reports/report-{ts}.html

ut = unittestreport.TestRunner(suite,filename=f"report-{ts}.html")

全量断言和部分断言

-全量断言,预期结果跟实际结果一个字都不能查,当返回结果不确定的时候(注册之后才会显示用户id),全量断言会导致断言失败

-部分断言,预期结果提取关键字进行断言,只要实际结果有相符的条件则通过

预期结果和实际结果的数据类型都是字典,所以只需要判断所需的值,就能省去其他无关的信息

也可以把所需的字段都进行断言 

 如果需要多个字段去断言,需要对预期结果进行for循环,每次取出需要断言的键值对,实际结果也使用相同的键值对,进行断言

            for key,value in expected.items():
                if key == "code":
                    self.assertEqual(value,actual[key])
                    my_logger.info("测试用例通过")
                elif key == "msg":
                    self.assertEqual(value, actual[key])
                    my_logger.info("测试用例通过")
                else:
                    continue

为了减少代码的行数,我们一般会在手工写入测试用例的时候,把这条用例所需的预期结果的信息写入excel表格里,而不是把返回的信息全部复制进去,之后再用for循环expected,然后用遍历出来的value值跟实际结果的值断言

 方法3相对好用,维护性高

适合自动化测试的项目

-需求稳定,不会频繁变更(项目初期不太适合)

-研发和测试周期长,需要频繁执行回归测试

-需要在多种平台上重复运行相同测试的场景(跨平台)

-某些测试项目通过手工测试无法实现,或者手工测试成本太高(性能测试)

-被测软件的开发较为规范,能够保证系统的可测试行

综上所述,接口测试更适合自动化测试

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值