上接:接口自动化测试框架(五):加密数据
接口测试
import requests
import pytest
import sys
import json
sys.path.append(r"D:360MoveDataUserslenovoDesktopstartProjectOAS.Cloud.PAAS_Interface")
from common import custRandom, readCase, trafficPermit, processData, readConfig
class Test_UM_register(object):
def readData(self):
self.path = readCase.readCasedata("UM", "Test_01").getPath()
self.headers = readCase.readCasedata("UM", "Test_01").getHeaders()
self.data = readCase.readCasedata("UM", "Test_01").getData()
self.url = readConfig.r_conf('common', 'url') + self.path
return [self.url, self.headers, self.data]
@pytest.mark.parametrize(
("number", "loginName", "email", "mobile"),[
# 正确填写
["case1",custRandom.mix_letters(8), custRandom.mix_letters(8)+"@qq.com", "136" + custRandom.digits(8)],
# 用户名必填
["case2", "", custRandom.mix_letters(8) + "@qq.com", "136" + custRandom.digits(8)],
# 邮箱必填
["case3",custRandom.mix_letters(8), "", "136" + custRandom.digits(8)],
# 手机号必填
["case4", custRandom.mix_letters(8), custRandom.mix_letters(8)+"@qq.com", ""],
])
def test_01(self, number, loginName, email, mobile):
# 数据获取
dataList = self.readData()
url = dataList[0]
headers = eval(dataList[1])
data = dataList[2]
# 将用例数据导入
num = number
data = processData.replaceData("yeqinfang106", loginName, data)
data = processData.replaceData("840332374@qq.com", email, data)
data = processData.replaceData("13632986452", mobile, data)
data = json.loads(data) # 格式化:json.dumps()将字典转化为字符串,json.loads()将字符串转化为字典
# 会话保持
session = requests.session()
# 发送请求
response = session.post(url=url, headers=headers, data=json.dumps(data)) # data参数要求为数据格式
print(response.text)
# 校验数据
if num == "case1":
assert json.loads(response.text)['status'] == 1
assert json.loads(response.text)['code'] == 200
assert json.loads(response.text)['message'] == "请求成功"
elif num == "case2":
assert json.loads(response.text)['status'] == 0
assert json.loads(response.text)['code'] == 434
assert json.loads(response.text)['message'] == "账号参数长度过短"
elif num == "case3":
assert json.loads(response.text)['status'] == 0
assert json.loads(response.text)['code'] == 434
assert json.loads(response.text)['message'] == "邮箱地址参数长度过短"
elif num == "case4":
assert json.loads(response.text)['status'] == 0
assert json.loads(response.text)['code'] == 434
assert json.loads(response.text)['message'] == "联系电话参数长度过短"
else:
pass
if __name__ =="__main__":
path = readConfig.r_conf('reportPath', 'path')
pytest.main([path, "--self-contained-html" , 'Test_01_register.py'])
这里是接口测试代码,里面的模块都是原先几篇的综合运用。接口测试框架主要是理解他的框架思想。上面的main函数里,使用pytest运行,接着生成测试报告。这是pytest自带的组件,非常方便。
readData函数中,读取的是测试用例的标准数据,即可根据这些数据来设计用例数据。
test_01函数中,使用的是参数化。即通过数据处理模块,设计需要传入的参数,这里的@pytest.mark.parametrize就是将参数不断传入的。这样就可以减少大量代码。
assert是python自带的判断语句,按正常使用即可。
上面就是简单的接口测试例子,读者可借鉴,但整个迁移的话,如果是新手,不好处理。不过可以私信我,一起学习交流。
阅读全文