python语言_接口自动化测试框架

金融业务自动化接口测试脚本(核心模块)

在这里插入图片描述在这里插入图片描述

  • 封装的公共断言方法
# 定义公共的断言方法:
def assert_common_untils(self, response, status_code, status, desc):
    self.assertEqual(status_code, response.status_code)
    self.assertEqual(status, response.json().get("status"))
    self.assertEqual(desc, response.json().get("description"))

  • 封装的接口API
from app import BASE_URL

class loginAPI:
    def __init__(self):
        self.getImgCode_url = BASE_URL + "/common/public/verifycode1/"
        self.getSmsCode_url =  BASE_URL + "/member/public/sendSms"
        self.register_url = BASE_URL + "/member/public/reg"
        self.login_url = BASE_URL + "/member/public/login"
        self.querying_login_url = BASE_URL + "/member/public/islogin"

    def getImgCode(self, session, r):
        url = self.getImgCode_url + r
        response = session.get(url)
        return response

    def getSmsCode(self, session, phone1,imgVerifyCode):
        url = self.getSmsCode_url
        data = {"phone":phone1, "imgVerifyCode":imgVerifyCode, "type":"reg"}
        response = session.post(url, data)
        return response

    def register(self, session, phone, pwd, verifycode, phone_code, dy_server, invite_phone):
        url = self.register_url
        data = {"phone": phone,
                "password": pwd,
                "verifycode": verifycode,
                "phone_code": phone_code,
                "dy_server": dy_server,
                "invite_phone": invite_phone}
        response = session.post(url, data)
        return response

    def login(self, session, username, pwd):
        url = self.login_url
        data = {"keywords": username, "password": pwd}
        response = session.post(url, data=data)
        return response

    def loginStatusQuerying(self, session):
        url = self.querying_login_url
        response = session.post(url)
        return response

from app import BASE_URL

class approveAPI:
    def __init__(self):
        self.get_approveAPI_url = BASE_URL + "/member/realname/approverealname"
        self.get_approveAPI_url_info = BASE_URL + "/member/member/getapprove"

    def approve(self, session, realname, card_id):
        url = self.get_approveAPI_url
        data = {"realname": realname, "card_id": card_id}
        response = session.post(url, data=data, files={"x": "y"})
        return response

    def getApproveInfo(self, session):
        url = self.get_approveAPI_url_info
        response = session.post(url)
        return response

from app import BASE_URL

# 1. 创建开户类
# 2. 初始化开户注册的url
class trustAPI:
    def __init__(self):
        self.trustAPI_URL = BASE_URL + "/trust/trust/register"

    def trustRegister(self, session):
        response = session.post(self.trustAPI_URL)
        return response

from app import BASE_URL

class riskAPI:
    def __init__(self):
        self.getRiskAPI_url = BASE_URL + "/risk/answer/submit"

    def riskAssessment(self, session, answers_1, answers_2, answers_3, answers_4, answers_5, answers_6, answers_7, answers_8, answers_9, answers_10):
        data = {"answers_1": answers_1,
                "answers_2": answers_2,
                "answers_3": answers_3,
                "answers_4": answers_4,
                "answers_5": answers_5,
                "answers_6": answers_6,
                "answers_7": answers_7,
                "answers_8": answers_8,
                "answers_9": answers_9,
                "answers_10": answers_10}
        response = session.post(self.getRiskAPI_url, data=data)
        return response
# 1. 初始化url
# 2. 发送充值图片验证码请求
# 3. 发送充值请求

from app import BASE_URL

class rechargeAPI:
    def __init__(self):
        self.RechargeVerifyCode_url = BASE_URL + "/common/public/verifycode/"
        self.rechargeAPI_URL = BASE_URL + "/trust/trust/recharge"

    def getRechargeVerifyCode(self, session, r):
        response = session.get(self.RechargeVerifyCode_url + r)
        return response

    def rechargeRequest(self, session, amount="1000", valocode="8888"):
        data = {"paymentType": "chinapnrTrust", "amount": amount, "formStr": "reForm", "valicode": valocode}
        response = session.post(self.rechargeAPI_URL, data=data)
        return response
from app import BASE_URL


class tenderAPI:
    def __init__(self):
        self.tenderAPI_url = BASE_URL + "/trust/trust/tender"

    def tenderRequest(self, session, id, depositCertificate="-1", amount="10000"):
        data = {"id": id, "depositCertificate": depositCertificate, "amount": amount}
        response = session.post(self.tenderAPI_url, data=data)
        return response
from app import BASE_URL

class myTenderListAPI:
    def __init__(self):
        self.myTenderListAPI_url = BASE_URL + "/loan/tender/mytenderlist"

    def myTenderListRequest(self, session, tender="tender", page="1"):
        data = {"status": tender, "page": page}
        response = session.post(self.myTenderListAPI_url, data=data)
        return response
  • 测试用例脚本
"""
投资业务流:
    1. 创建投资业务流程类(继承单元测试框架unittest);
    2. 初始化参数;
    3. 导入封装接口类(注册、登录、认证、开户、风险测评、充值、投资、查看投资);
    4. 从封装的接口类中业务接口类;
        4.1 调用封装接口;
        4.2 断言结果。
"""
import app
import unittest
import requests
from until import assert_common_untils, send_third_request
from api import loginAPI, approveAPI, trustAPI, rechargeAPI, tenderAPI, myTenderListAPI, riskAPI

class tenderProcess(unittest.TestCase):
    phone1 = "13709122912"
    passpwd = "test123"
    imgVerifyCode = "8888"
    phone_code = "666666"
    realname = "俊玲本和"
    card_id = "123456789369874563"

    @classmethod
    def setUpClass(cls) -> None:
        cls.session = requests.Session()
        cls.loginAPI = loginAPI.loginAPI()
        cls.approveAPI = approveAPI.approveAPI()
        cls.trustAPI = trustAPI.trustAPI()
        cls.rechargeAPI = rechargeAPI.rechargeAPI()
        cls.tenderAPI = tenderAPI.tenderAPI()
        cls.myTenderListAPI = myTenderListAPI.myTenderListAPI()

    @classmethod
    def tearDownClass(cls) -> None:
        cls.session.close()

    # 注册
    def test01_register_success(self):
        # 获取图片验证码
        # 获取短信验证码
        # 注册
        response = self.loginAPI.getImgCode(self.session, str(app.r))
        self.assertEqual(200, response.status_code)
        response = self.loginAPI.getSmsCode(self.session, self.phone1, self.imgVerifyCode)
        assert_common_untils(self, response, 200, 200, "短信发送成功")
        response = self.loginAPI.register(self.session, phone=self.phone1, pwd=self.passpwd,
                                           verifycode=self.imgVerifyCode, phone_code=self.phone_code, dy_server="on",
                                           invite_phone="")
        assert_common_untils(self, response, 200, 200, "注册成功")

    # 登录
    def test02_login_success(self):
        response = self.loginAPI.login(self.session, self.phone1, self.password)
        assert_common_untils(self, response, 200, 200, "登录成功")

    # 认证
        # 1. 已登录
        # 2. 认证
    def test03_approve_success(self):
        tenderProcess.test02_login_success(self)
        response = self.approveAPI.approve(self.session, self.realname, self.card_id)
        assert_common_untils(self, response, 200, 200, "提交成功!")

    # 开户
    def test04_trust_success(self):
        tenderProcess.test02_login_success(self)
        response = self.trustAPI.trustRegister(self.session)
        self.assertEqual(200, response.status_code)
        self.assertEqual(200, response.json().get("status"))
        response_data = response.json().get("description").get("form")
        # 三方开户
        response = send_third_request(response_data)
        self.assertEqual(200, response.status_code)
        self.assertEqual("UserRegister OK", response.text)

    # 风险评测
    def test05_risk_assessment_success(self):
        tenderProcess.test02_login_success(self)
        response = riskAPI.riskAPI().riskAssessment(self.session, "A", "C", "D", "B", "C", "B", "B", "C", "B", "C")
        self.assertEqual(200, response.status_code)
        self.assertEqual("OK", response.json().get("description"))

    # 充值
        # 0. 登录
        # 1. 获取充值验证码
        # 2. 充值
    def test06_recharge_success(self):
        tenderProcess.test02_login_success(self)
        response = self.rechargeAPI.getRechargeVerifyCode(self.session, str(app.r))
        self.assertEqual(200, response.status_code)
        response = self.rechargeAPI.rechargeRequest(self.session, amount="20000")
        self.assertEqual(200, response.status_code)
        self.assertEqual(200, response.json().get("status"))
        response_data = response.json().get("description").get("form")
        # 三方充值
        response = send_third_request(response_data)
        self.assertEqual(200, response.status_code)
        self.assertEqual("NetSave OK", response.text)

    # 投资
    def test07_tender_success(self):
        tenderProcess.test02_login_success(self)
        # 发送投资请求
        response = self.tenderAPI.tenderRequest(self.session, id="2423", amount="9000")
        self.assertEqual(200, response.status_code)
        self.assertEqual(200, response.json().get("status"))
        # 第三方发送投资请求
        response_data = response.json().get("description").get("form")
        response = send_third_request(response_data)
        self.assertEqual(200, response.status_code)
        self.assertEqual("InitiativeTender OK", response.text)

    # 我的投资中查看
    def test08_myTender_success(self):
        tenderProcess.test02_login_success(self)
        response = self.myTenderListAPI.myTenderListRequest(self.session)
        self.assertEqual(200, response.status_code)
        self.assertEqual("2", response.json().get("isCert"))
  • unittest单元测试框架,管理并执行测试脚本,生产测试报告
import time
import unittest
from app import BASE_DIR
from script.tender_process import tenderProcess
from lib.HTMLTestRunner_PY3 import HTMLTestRunner

# 添加测试用例至测试集中
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(tenderProcess))

# 定义一个存放报告的文件路径
file_data = BASE_DIR + "/report/report{}.html".format(time.strftime("%Y%m%d-%H%M%S"))

# 向文件内写内容
with open(file_data, 'wb') as f:
    runner = HTMLTestRunner(stream=f, verbosity=1, title="p2p_test_projects", description="p2p金融项目接口测试报告")
    runner.run(suite)
  • 测试报告展示

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值