测试数据的复用性
之前有人问过我,在接口自动化中,测试数据是怎么写的,比如我的注册接口里面,注册的是手机号码,怎么保证我的手机号每次都不一样呢?下面我就介绍下我是怎么处理这个问题的吧
首先,比如注册接口就只有手机号这个参数(这是举个栗子哈)
我们写测试数据可以这么写:{"phone":"#phone#"}
那么问题来了,我如果直接将这个参数传递过去,那么接口肯定是要报错的
处理办法是:我们首先得去写一个生成手机号的一个函数
def mk_phone(): """随机生成手机号码. 1[35789]() """ phone = '1' + random.choice(['3', '5', '7', '8', '9']) for i in range(9): # 取 9 次 num = str(random.randint(0, 9)) phone += num return phone
当然我这个函数是没有对比数据库是否有这个手机号,实际用的时候应该还要去数据库查看下数据库是否有生成的这个手机号,没有的话就跳出循环,有的话则继续
然后我们可以在写测试用例方法的时候直接替换,直接上代码吧,哈哈
import random def mk_phone(): """随机生成手机号码. 1[35789]() """ phone = '1' + random.choice(['3', '5', '7', '8', '9']) for i in range(9): # 取 9 次 num = str(random.randint(0, 9)) phone += num return phone data = ["{'phone': '#phone#'}", "{'phone': '#phone#'}"] for i in data: if "#phone#" in i: new_data = i.replace("#phone#", mk_phone()) print(new_data)
可能有同学会问为什么我们的data里面是字符串呢?这个是因为我们从Excel读出来的数据都是字符串,这里的环节只是少了这一步,不知道怎么读取Excel的同学可以去看下我之前写的博客哈
传递参数我们只需要对这个data进行eval或者用json方法转化下就可以了哈
看下我们的结果吧
运行了上面的代码,我们的data就变成这个样子了,这样不就是我们想要的结果吗?