# -*- coding: utf-8 -*- # user = www import json import unittest from common.basic_data import Context, DoRegex from common import contants from common.do_excel import DoExcel from ddt import ddt, data from common.request import Request from common.log_http import MyLog ww = DoExcel(contants.cases_path) cases = ww.get_cases('list') @ddt class TestList(unittest.TestCase): def setUp(self): print("开始测试") @data(*cases) def test_list(self, case): my_logger = MyLog() if case.data != None: data = DoRegex.replace(case.data) # 正则调用,替换正则表达式的数据 data = json.loads(data) if hasattr(Context, 'cookies'): cookies = getattr(Context, 'cookies') else: cookies = None res = Request(method=case.method, url=case.url, data=data, cookies=cookies) print(res.get_json()) if res.get_cookies(): setattr(Context, 'cookies', res.get_cookies())
# -*- coding: utf-8 -*- # user = www import unittest import json from common.request import Request from common import contants from ddt import ddt,data from common.mysql_util import MysqlUtil from common.do_excel import DoExcel from common.basic_data import Context, DoRegex ww = DoExcel(contants.cases_path) cases = ww.get_cases('bidLoan') @ddt class TestBidLoan(unittest.TestCase): def setUp(self): print("开始测试") self.mysql = MysqlUtil() self.sql = "select * from future.member where MobilePhone ={}".format(Context.normal_user) self.start_amount = self.mysql.fetch_one(self.sql)['LeaveAmount'] @data(*cases) def test_bidLoan(self, case): data = DoRegex.replace(case.data) data = json.loads(data) print("执行第{}条案例".format(case.case_id)) if hasattr(Context, 'cookies'): cookies = getattr(Context, 'cookies') else: cookies = None res = Request(method=case.method, url=case.url, data=data, cookies=cookies)
# -*- coding: utf-8 -*- # user = www import unittest import json from common.log_http import MyLog from common import contants from common.request import Request from ddt import ddt, data from common.do_excel import DoExcel from common.basic_data import DoRegex, Context from common.mysql_util import MysqlUtil ww = DoExcel(contants.cases_path) cases = ww.get_cases('add') @ddt class TestAdd(unittest.TestCase): def setUp(self): print("开始测试") self.mysql = MysqlUtil() def tearDown(self): self.mysql.close() print("测试结束") print("--------------------------------------") @data(*cases) def test_add(self, case): # 必须传输一条case my_logger = MyLog()
# @File : test_getInvestsByMemberId.py # @Function : 测试获取用户所有投资记录 import unittest import json from common.do_excel import DoExcel from common import contants from ddt import ddt, data from datas.mysql_util import MysqlUtil from common.basic_data import Context, DoRegex from common.request import Request from common.logger2 import MyLog do_excel = DoExcel(file_name=contants.case_file) cases = do_excel.get_cases(sheet_name='getInvestsByMemberId') @ddt class TestGetInvestsByMemberId(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() @data(*cases) def test_getInvestsByMemberId(self, case): data = DoRegex.replace(case.data) # 参数化处理 data = json.loads(data) # 将测试数据由字符串序列化成字典 if hasattr(Context, 'cookies'): # 判断是否有cookies cookies = getattr(Context, 'cookies') # 获取放到上下文里面的cookies else:
# @Software : PyCharm # @File : test_getLoanList.py # @Function : 测试获取表列表接口 import unittest from ddt import ddt, data import json from common.do_excel import DoExcel from common import contants from common.request import Request from common.basic_data import DoRegex, Context from datas.mysql_util import MysqlUtil from common.logger2 import MyLog do_excel = DoExcel(file_name=contants.case_file) cases = do_excel.get_cases(sheet_name='getLoanList') # 返回cases列表 @ddt class TestGetLoanList(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() @data(*cases) def test_getLoanList(self, case): data = DoRegex.replace(case.data) # 参数化处理 data = json.loads(data) # 字符串序列化为字典 # 先判断有没有cookies if hasattr(Context, 'cookies'): cookies = getattr(Context, 'cookies') else:
# -*- coding: utf-8 -*- # user = www import json import unittest from common.basic_data import Context, DoRegex from common import contants from common.do_excel import DoExcel from ddt import ddt, data from common.mysql_util import MysqlUtil from common.request import Request from common.log_http import MyLog ww = DoExcel(contants.cases_path) cases = ww.get_cases('withdraw') @ddt class TestWithdraw(unittest.TestCase): def setUp(self): print("开始测试") self.mysql = MysqlUtil() self.sql = "select l.LeaveAmount from future.member l where l.MobilePhone ={}".format( Context.normal_user) self.start_amount = self.mysql.fetch_one(self.sql)['LeaveAmount'] @data(*cases) def test_withdraw(self, case): my_logger = MyLog() my_logger.debug("执行第{}条案例".format(case.case_id)) data = DoRegex.replace(case.data) data = json.loads(data)
''' import unittest import json import re from ddt import ddt,data from common.request import Request from common.do_excel import DoExcel from common import contants from common.mysql_util import MysqlUtil do_excel = DoExcel(contants.case_file) cases = do_excel.get_cases(sheet_name='register') # 返回cases列表 # 登录接口的测试类 @ddt class TestLogin(unittest.TestCase): # @classmethod # def setUpClass(cls): # 必须使用@classmethod 装饰器,所有test运行前运行一次 # global mysql # mysql = MysqlUtil() # sql = 'select mobilephone from future.member where ' \ # ' mobilephone != "" order by mobilephone desc limit 1 ' # # global max_phone # max_phone = mysql.fetch_one(sql)['mobilephone']
# @Function : 获取用户流水记录接口 import unittest import json from common.do_excel import DoExcel from common import contants from ddt import ddt, data from datas.mysql_util import MysqlUtil from common.basic_data import Context, DoRegex from common.request import Request from common.logger2 import MyLog do_excel = DoExcel(file_name=contants.case_file) cases = do_excel.get_cases(sheet_name='getFinanceLogList') @ddt class TestGetFinanceLogList(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() @data(*cases) def test_getFinanceLogList(self, case): data = DoRegex.replace(case.data) # 参数化处理 data = json.loads(data) # 将测试数据由字符串序列化成字典 if hasattr(Context, 'cookies'): # 判断是否有cookies cookies = getattr(Context, 'cookies') # 获取放到上下文里面的cookies else:
@function: """ import json import unittest from ddt import ddt, data from common import contants from common.basic_data import DoRegex, Context from common.do_excel import DoExcel from common.mysql_util import MysqlUtil from common.request import Request do_excel = DoExcel(contants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases('invest') @ddt class InvestTest(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() # 投资前账户余额 self.select_member = 'select * from future.member where mobilephone = {0}'.format( Context.normal_user) self.before_amount = self.mysql.fetch_one( self.select_member)['LeaveAmount'] # 自己去添加 pass @data(*cases)
# @File : test_getInvestsByLoanId.py # @Function : 测试获取标的所有投资记录接口 import unittest import json from common.do_excel import DoExcel from common import contants from ddt import ddt, data from datas.mysql_util import MysqlUtil from common.basic_data import Context, DoRegex from common.request import Request from common.logger2 import MyLog do_excel = DoExcel(file_name=contants.case_file) cases = do_excel.get_cases(sheet_name='getInvestsByLoanId') @ddt class TestFetInvestsByLoanId(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() @data(*cases) def test_getInvestsByLoanId(self, case): data = DoRegex.replace(case.data) # 参数化处理 data = json.loads(data) # 将测试数据由字符串序列化成字典 if hasattr(Context, 'cookies'): # 判断是否有cookies cookies = getattr(Context, 'cookies') # 获取放到上下文里面的cookies else:
# -*- coding: utf-8 -*- # user = www import unittest import json from common.log_http import MyLog from common import contants from common.request import Request from ddt import ddt, data from common.do_excel import DoExcel from common.basic_data import DoRegex, Context from common.mysql_util import MysqlUtil ww = DoExcel(contants.cases_path) cases = ww.get_cases('generateRepayments') @ddt class TestGenerateRepayments(unittest.TestCase): def setUp(self): print("开始测试") self.mysql = MysqlUtil() pass def tearDown(self): self.mysql.close() print("测试结束") print("--------------------------------------") @data(*cases) def test_generateRepayments(self, case): # 必须传输一条case
from common.do_excel import DoExcel from ddt import ddt, data from common.basic_data import DoRegex, Context from common import project_path from common.read_conf import ReadConfig import json import time from common.webservice_request import WebserviceRequest from common.do_mysql import DoMysql import random from common import random_string from common.logger import MyLog # 读取测试数据 do_excel = DoExcel(project_path.data_path) cases = do_excel.get_cases('register') my_logger = MyLog() @ddt class TestRegister(unittest.TestCase): def setUp(self): self.db = DoMysql() sql = 'SELECT COUNT(*) count FROM user_db.t_user_info;' self.before_line_count = self.db.fetch_one(sql)['count'] @data(*cases) def test_register(self, case): my_logger.info('正在执行第{}条用例:{}'.format(case.case_id, case.title)) my_logger.info('-----------开始检查url地址-------------') url = ReadConfig().get('test_api', 'url_pre') + case.url
# 测试投资接口 # 步骤:管理员登陆--》管理员增加标的--》借款人加标--》投资人投标 # 增加其他表数据校验 import unittest from common.do_excel import DoExcel from common.config import constants from common.request import Request from common.basic_data import DoRegex, Context import json from ddt import ddt, data, unpack, file_data from datas.mysql_util import MysqlUtil do_excel = DoExcel(constants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases("invest") #返回case列表 @ddt class InvestTest(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() # 投资前账户余额 self.select_member = 'select * from future.member where mobilephone = {0}'.format( Context.normal_user) self.before_amount = self.mysql.fetch_one( self.select_member)['LeaveAmount'] # 自己去添加 pass @data(*cases)
# @Email : [email protected] # @Software : PyCharm # @File : test_withdraw.py # @Function : 测试取现接口 import unittest import json from ddt import ddt, data from common.do_excel import DoExcel from common import contants from common.request import Request from common.basic_data import DoRegex, Context from datas.mysql_util import MysqlUtil do_excel = DoExcel(file_name=contants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases('withdraw') # 返回一个case列表,由一个个Case对象/实例组成 @ddt class TestWithdraw(unittest.TestCase): def setUp(self): self.sql = 'SELECT * FROM future.member WHERE MobilePhone = {0}'.format( Context.invest_user) self.mysql = MysqlUtil() # 取现前账户余额记录 self.leaveamount_old = self.mysql.fetch_one( self.sql)['LeaveAmount'] # 获取账户余额---测试取现前的账户余额 print("取现前的账户余额是:{}元".format(self.leaveamount_old)) @data(*cases) def test_withdraw(self, case):
# 一个标的/项目,有多个用户投资,所以会生成多条投资记录 # 用户每投资一次,就生成一条投资记录 # 用户余额有变动的话,会在资金流水表插入一条记录 import unittest import json from common.do_excel import DoExcel from common import contants from ddt import ddt, data from datas.mysql_util import MysqlUtil from common.basic_data import Context, DoRegex from common.request import Request do_excel = DoExcel(file_name=contants.case_file) cases = do_excel.get_cases(sheet_name='invest') @ddt class TestInvest(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() self.sql_select_member = 'SELECT * FROM future.member WHERE MobilePhone = {0}'.format( Context.invest_user) # 投资竞标前的账户余额 self.leaveamount_old = self.mysql.fetch_one( self.sql_select_member)['LeaveAmount'] # 获取账户余额---测试投资竞标前的账户余额 print("投资竞标前的投资人账户余额是:{}元".format(self.leaveamount_old)) @data(*cases) def test_invest(self, case):
# -*- coding:utf-8 -*- # @Time : 2019/1/2 21:06 # @Author : totoo import unittest from common.do_excel import DoExcel from common.config import constants from common.request import Request import json from ddt import ddt,data,unpack,file_data from datas.mysql_util import MysqlUtil do_excel = DoExcel(constants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases("register") #返回case列表 @ddt class TestLogin(unittest.TestCase): @classmethod def setUpClass(cls): global mysql mysql = MysqlUtil() sql = "SELECT MobilePhone from future.member where MobilePhone!='' ORDER BY MobilePhone DESC LIMIT 1" global max_phone max_phone = int(mysql.fetch_one(sql)['MobilePhone']) # def setUp(self): # print("=" * 100) # # 查询最大手机号 # self.mysql = MysqlUtil()
5. 数据验证 6. 报告 """ # 参数化,数据库校验 import unittest import re import json from common.do_excel import DoExcel from common import contants from common.request import Request from ddt import ddt,data from datas.mysql_util import MysqlUtil do_excel = DoExcel(file_name=contants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases('register') # 返回一个case列表,由一个个Case对象/实例组成 @ddt class TestRegister(unittest.TestCase): # 每次运行只执行一次的操作,放到setUpClass里面,不放到setUp里。 @classmethod def setUpClass(cls): global mysql mysql = MysqlUtil() sql = "select mobilephone from future.member where mobilephone != '' order by mobilephone desc limit 1;" global max_phone_old max_phone_old = mysql.fetch_one(sql)['mobilephone'] @data(*cases)
import unittest from common.do_excel import DoExcel from common import contants from common.reques import Request from ddt import ddt,data,unpack import json #打开表格 do_excel = DoExcel(contants.case_file1) #定位表单 cases = do_excel.get_cases('login') @ddt class TestLogin(unittest.TestCase): def setUp(self): print('测试数据准备') #使用ddt把表单内的全部数据取出 @data(*cases) def test_login(self,case): # #遍历表单内login内的测试数据 # for case in cases: #把data转换成json格式 # data = json.loads(case.data,encoding='utf-8') # print(data) #请求表单内数据 resp = Request(methon=case.method, url=case.url, data=eval(case.data)) # 通过封装Request类来完成接口的调用 print('status_code',resp.get_status_code()) # 打印响应码 print(resp.get_text()) #断言表格内的期望结果与接口内实际返回的结果
# 配置文件设置基础登陆数据--》 通过context类获取 --》 regex正则匹配 --》 request发起请求 --》 context中添加cookie属性 # --》 进行recharge请求 --》 context中获取cookies--》 数据库校验(使用mysql模块) import unittest from common.do_excel import DoExcel from common.config import constants from common.request import Request import json from ddt import ddt,data,unpack,file_data from common.basic_data import DoRegex from common.basic_data import Context do_excel = DoExcel(constants.case_file) # 实例化一个DoExcel对象 cases=do_excel.get_cases("recharge") #返回case列表 @ddt class TestRecharge(unittest.TestCase): def setUp(self): print("-"*100) @data(*cases) def test_charge(self,case): # 对取到的数据,做参数化处理 data = DoRegex.replace(case.data) data = json.loads(data) print("===test data===",data) if hasattr(Context,'cookies'): # 通过上下文判断,来赋值cookies cookies=getattr(Context,'cookies')
# -*- coding: utf-8 -*- # user = www import unittest import json from common.log_http import MyLog from common import contants from common.request import Request from ddt import ddt, data from common.do_excel import DoExcel from common.basic_data import DoRegex, Context from common.mysql_util import MysqlUtil ww = DoExcel(contants.cases_path) cases = ww.get_cases('getInvestsByLoanId') @ddt class TestGetInvestsByLoanId(unittest.TestCase): def setUp(self): print("开始测试") self.mysql = MysqlUtil() pass def tearDown(self): self.mysql.close() print("测试结束") print("--------------------------------------") @data(*cases) def test_getInvestsByLoanId(self, case): # 必须传输一条case
# 基础数据放入配置文件>> context (反射)>> 通过从类里取出,用正则匹配excel中 >> # request >> context 添加cookies >>recharge 取context的cookies import unittest import json import re from ddt import ddt, data from common.request import Request from common.do_excel import DoExcel from common import contants from common.mysql_util import MysqlUtil from common.basic_data import DoRegex, Context do_excel = DoExcel(contants.case_file) cases = do_excel.get_cases(sheet_name='recharge') # 返回cases列表 # 登录接口的测试类 @ddt class TestRecharge(unittest.TestCase): @classmethod def setUpClass(cls): print("准备最大手机号码") global mysql mysql = MysqlUtil() sql = 'select mobilephone from future.member where ' \ ' mobilephone != "" order by mobilephone desc limit 1 ' global max_phone max_phone = mysql.fetch_one(sql)['mobilephone']
# -*- coding: utf-8 -*- # user = www import unittest import json from common.log_http import MyLog from common import contants from common.request import Request from ddt import ddt, data from common.do_excel import DoExcel from common.basic_data import DoRegex, Context from common.mysql_util import MysqlUtil ww = DoExcel(contants.cases_path) cases = ww.get_cases('getFinanceLogList') @ddt class TestGetFinanceLogList(unittest.TestCase): def setUp(self): print("开始测试") self.mysql = MysqlUtil() pass def tearDown(self): self.mysql.close() print("测试结束") print("--------------------------------------") @data(*cases) def test_getFinanceLogListd(self, case): # 必须传输一条case my_logger = MyLog()
@function: """ import json import unittest from ddt import ddt, data from common import contants from common.basic_data import DoRegex, Context from common.do_excel import DoExcel from common.mysql_util import MysqlUtil from common.request import Request do_excel = DoExcel(contants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases('recharge2') @ddt class TestRecharge(unittest.TestCase): def setUp(self): # 充值前账户余额记录 self.mysql = MysqlUtil() # 查询投资用户的账户信息 self.sql = 'select * from future.member where mobilephone = {0}'.format(Context.normal_user) self.before_amount = self.mysql.fetch_one(self.sql)['LeaveAmount'] # 账户余额 print("充值前的金额", self.before_amount) @data(*cases) def test_recharge(self, case):
--数据校验(取出来期望结果,查询数据库leaveamount,两个比较)""" import unittest import json from common.do_excel import DoExcel from common import contants from common.request import Request from ddt import ddt, data from common.basic_data import DoRegex, Context from datas.mysql_util import MysqlUtil from common.logger2 import MyLog """执行用例时,把从excel取到的数据,通过正则解析出来,再通过setattar() 放到Context的属性里,保存。 使用时通过getattr()取出来使用。""" do_excel = DoExcel(file_name=contants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases('recharge') # 返回一个case列表,由一个个Case对象/实例组成 sql = 'SELECT LeaveAmount FROM future.member WHERE MobilePhone = {0}'.format( Context.invest_user) mysql = MysqlUtil() @ddt class TestRecharge(unittest.TestCase): # 在setup里面完成充值前账户余额的获取 def setUp(self): # 充值前账户余额记录 self.leaveamount_old = mysql.fetch_one(sql) # 获取账户余额---测试充值前的账户余额 MyLog.info("充值前的余额是:{}元".format(self.leaveamount_old['LeaveAmount'])) # 查询投资用户的账户信息
4.把手机号替换上去 # 怎么取出来? ''' import unittest import json from common.do_excel import DoExcel from common import contants from common.request import Request from ddt import ddt,data from common.basic_data import DoRegex from common.config import CofigLoader from common import logger do_excel = DoExcel(file_name=contants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases('login') # 返回一个case列表,由一个个Case对象/实例组成 @ddt class TestLogin(unittest.TestCase): def setUp(self): print("测试准备") # def test_login(self): # do_excel = DoExcel(file_name=contants.case_file) # 实例化一个DoExcel对象 # cases = do_excel.get_cases('login') # 返回一个case列表,由一个个Case对象/实例组成 # for case in cases: # data = json.loads(case.data) # 从excel中取到的data是一个字符串,把字符串转为字典 # resp = Request(method=case.method,url=case.url,data=data) # print("status_code:", resp.get_status_code()) # 打印响应码 # resp_dict = resp.get_json() # 获取请求响应,字典
# -*- coding:utf-8 -*- # @Time : 2018/12/26 22:04 # @Author : totoo # 测试登陆 import unittest from common.do_excel import DoExcel from common.config import constants from common.request import Request import json from ddt import ddt, data, unpack, file_data from datas.mysql_util import MysqlUtil do_excel = DoExcel(constants.case_file) # 实例化一个DoExcel对象 cases = do_excel.get_cases("login") #返回case列表 @ddt class TestLogin(unittest.TestCase): def setUp(self): pass @data(*cases) def test_login(self, case): data = json.loads(case.data) resp = Request(method=case.method, url=case.url, data=data) # 通过封装的Request类来完成接口的调用 print('test data:', data) print('status_code:', resp.get_status_code()) # 打印响应码 resp_dict = resp.get_json() # 获取请求响应,字典
# 管理员登录--管理员加标--管理员审核 # 投资人登录--投资人投资竞标--直到标满标的状态自动变为核保审批状态 # 每投资一次,invest表会新增一条记录,根据LoanId查看 # 投资人登录--生成回款计划() # 一条投资记录,会生成一条或多条回款计划记录,根据invest表的ID,查看回款计划 import unittest import json from common.do_excel import DoExcel from common import contants from ddt import ddt, data from datas.mysql_util import MysqlUtil from common.basic_data import Context, DoRegex from common.request import Request do_excel = DoExcel(file_name=contants.case_file) cases = do_excel.get_cases(sheet_name='generateRepayments') @ddt class TestGenerateRepayments(unittest.TestCase): def setUp(self): pass @data(*cases) def test_generateRepayments(self, case): data = DoRegex.replace(case.data) # 参数化处理 data = json.loads(data) # 将测试数据由字符串序列化成字典 if hasattr(Context, 'cookies'): # 判断是否有cookies cookies = getattr(Context, 'cookies') # 获取放到上下文里面的cookies else:
from common.basic_data import DoRegex from common.mysql_util import MysqlUtil class HashLib: @staticmethod def md5_key(arg): hash = hashlib.md5() hash.update( arg.encode('utf-8') ) # #参数必须是byte类型,否则报Unicode-objects must be encoded before hashing错误 return hash.hexdigest() do_excel = DoExcel(contants.case_file) cases = do_excel.get_cases(sheet_name='login') # 返回cases列表 # 登录接口的测试类 @ddt class TestLogin(unittest.TestCase): @classmethod def setUpClass(cls): global mysql mysql = MysqlUtil() sql_max = 'select mobilephone from future.member where ' \ ' mobilephone != "" order by mobilephone desc limit 1 ' global max_phone max_phone = mysql.fetch_one(sql_max) # 从数据库中查找出最大的手机号码用来测试非注册用户登录用例 @data(*cases)
# @Email : [email protected] # @Software : PyCharm # @File : test_list.py # @Function : 测试获取用户列表(list)接口 import json import unittest from common.do_excel import DoExcel from common import contants from ddt import ddt, data from common.request import Request from common.basic_data import DoRegex, Context from datas.mysql_util import MysqlUtil do_excel = DoExcel(file_name=contants.case_file) cases = do_excel.get_cases(sheet_name='list') # 返回cases列表 @ddt class TestList(unittest.TestCase): def setUp(self): self.mysql = MysqlUtil() @data(*cases) def test_list(self, case): data = DoRegex.replace(case.data) data = json.loads(data) # 先判断有没有cookies if hasattr(Context, 'cookies'): cookies = getattr(Context, 'cookies')
# -*- coding: utf-8 -*- # user = www import unittest import json from common.log_http import MyLog from common import contants from common.request import Request from ddt import ddt, data from common.do_excel import DoExcel from common.basic_data import DoRegex, Context from common.mysql_util import MysqlUtil ww = DoExcel(contants.cases_path) cases = ww.get_cases('recharge') @ddt class TestRecharge(unittest.TestCase): def setUp(self): print("开始测试") self.sql = "select l.LeaveAmount from future.member l where l.MobilePhone ={}".format( Context.normal_user) self.mysql = MysqlUtil() self.leaveamount = self.mysql.fetch_one(self.sql)['LeaveAmount'] def tearDown(self): self.mysql.close() print("测试结束") print("--------------------------------------") @data(*cases)