pytest接口自动化(二)—— 单接口调用和多接口调用
-
- testcases [测试用例脚本]
- 单接口脚本 单接口脚本很简单,就是对某一个场景的单独的接口测试 如下:
- testcases [测试用例脚本]
...
class TestGetFreeLoginToken:
@allure.story("用例:获取自动登录接口测试")
@allure.description("获取自动登录的Token")
def test_getFreeToken(self, free_login_fixture):
data = 'ABCD'
token = free_login_fixture #token值是都free_login_fixture方法返回的
logger.info("******** 开始执行用例 ********")
result = O_Oprations(token=None).getFreeToken(token)
assert result.status_code == 200 # 断言返回code是否是200
assert data not in json.loads(result.content)['token']
assert 'token' in json.loads(result.content) # 断言接口返回信息中的特殊值。
logger.info("******** 结束执行用例 ********")
-
-
- 多接口脚本 单个场景(或多个场景)接口调用下一个接口需要上一个接口返回的值中的某个或某几个参数,或下一个接口调用需上一个接口调用成功。 如下:
-
class TestExportExercise:
@allure.story("用例: 导出练习接口") # story需求
@allure.description("导出练习接口测试") #测试用例描述
def test_exportExercise(self, login_fixture, Create_room):
token = json.loads(login_fixture)['userInfo']['token'] # 登录接口获取用户登录时的token信息
exerciseId = json.loads(Create_room['exercise_res'].content)['id'] # 创建房间接口返回的exercise_res的字符串中包含了exerciseId信息
serviceName = 'A'
logger.info("******** 开始执行用例 ********")
result = O_Oprations(token=token).export_Exercise(exerciseId, serviceName) # 调用练习导出接口是,所需要的exerciseId, token 参数来源于另外的两个接口,并且此接口调用前, 必须要先登录
assert result.status_code == 200
logger.info("******** 结束执行用例 ********")
通过这个列子,我们可以看出,再测试导出练习的接口时,我们就必须完成用户登录 - > 创建房间且房间中包含练习 - > 前几个接口调用成功后,才能调用导出练习接口。当然会有更复杂的场景,接口之间的调用关系会更复杂,但是我们只要理清楚职业的业务逻辑,就能够更好的完成复杂场景直接的接口测试,编写出更优质的自动化接口测试脚本。
pytest接口自动化(三) 说点个人在接口自动化脚本方面的看法