加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

接口自动化测试框架(六):接口测试

11/21 13:50
487
阅读需 9 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
上接:接口自动化测试框架(五):加密数据

接口测试

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自带的判断语句,按正常使用即可。

上面就是简单的接口测试例子,读者可借鉴,但整个迁移的话,如果是新手,不好处理。不过可以私信我,一起学习交流。

相关推荐

电子产业图谱