做接口测试的时候开发都会给你一个接口文档,一般都是用swagger,做接口测试就是按照开发给的接口写测试用例然后完成测试。
我找的是微信开放文档,申请了一个测试账号
接口地址、参数说明、返回说明,咱们就是按照这三个信息进行接口测试。
看上面的接口,我们了解到接口名叫获取access_token,需要的参数有三个,(预期结果我们先写None),所以我们在yaml文件中写如下测试用例:
注意我们读取这个文件以后获取到的内容是一个list
我们新建一个test_api.py
文件,代码通过parametrize
传参
执行结果:
首先我们获取到了用例,如果你稍加注意的话,你会发现读取到的用例类型不再是list了,而变成了dict。
接下来我们需要获取具体的值,然后通过requests进行给接口传参了
为了方便理解,我们先不做封装
我们在调用requests进行传参时,一般用Session
进行传参,因为Session
可以做Cookie
的关联。
request传参中,params
是get
方式传参,而data
和json
是post
传参参数
执行:
返回结果和接口文档的预期返回值一致。
但是一个接口不可能只有一个用例,我们再加一个反例,我们一般把一个接口的用例都写在一个yaml文件中
代码改为:
执行用例以后可以看到一个通过一个没有通过。
为了说明接下来的一个问题,我们再添加一个用户创建标签的接口:
新建create_flag.yaml
文件
在test_api.py文件新建方法test_create_flag
这里因为增加标签接口需要access_token,这个值需要从上一个接口的返回值中获取,所以我们定义了一个TestApi.access_token
变量
执行以后可以看到两个用例都通过了。
保留代码。把get_token.yaml中的第二个用例(反例)我们先删掉,现在我们新建一个product_manage
包,并新建get_token.yaml
和add_product.py
文件,把下面的代码复制过来改一下路径
结构:
代码:
get_token.yaml(下面那个和这个一样,把反例删掉了)
test_add_product.py
代码都是复制来的,只是把yaml路径改了一下。因为发送请求方法我们没有做封装,这里需要导入TestApi那个包
按理说,现在一共三个方法,每个方法中有一个用例,我们执行时应该跑三个用例,但是当我们执行以后发现:
结果竟然执行了5个用例。
分析结果我们发现,创建标签test_create_flag接口执行了两次,test_access_token接口执行了三次。
这是因为导入类的时候,对应类下面的用例都会被执行。
所以我们就不能导入带有用例的类,要把对应的方法封装出去。
代码改为:
request_util.py
test_add_product.py
test_api.py
get_token.yaml
create_flag.yaml
再次执行,就可以看到执行了三个用例了。
创建用户标签中name值每次都要变,不然就会报错,所以理论上我们要给name传动态的值的。我们以后再说。