金融业务自动化接口测试脚本(核心模块)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/652d4b79457e7eda09c7771c950ea066.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7dfa739a67cfad81eff252bdcd824faa.png)
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"))
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
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
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, "登录成功")
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"))
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)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ed9297a7ff489c95fa3d9b5441d74a1d.png)