一、1个方法执行1条用例:仅仅提供思路
优化方式:
1. 传参可以进行参数化处理处理
2. 对方法进行封装减少重复代码
import unittest
# 导入自己写的类
from excel.operetion_data import OpererionData # 获取Excel数据
from base.request import Request
from base.errorCode import ErrorCode
class Login(unittest.TestCase):
def setUp(self):
# 根据case_id执行
self.caseid = 'login-001'
self.header = Request().request_header(self.caseid)
self.request_data = Request().request_data(self.caseid)
# 输入正确的用户名和密码进行登录
def test_01(self):
data = Request().request(self.caseid, self.header, self.request_data)
# Login().check_data(self.caseid, data, 0)
ErrorCode().check_data(self.caseid, data, 0)
# 输入用户名:null
def test_02(self):
self.request_data['phone'] = ''
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 101)
# 输入用户名格式不正确:123 or 22222222222
def test_03(self):
self.request_data['phone'] = '123'
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 407)
def test_04(self):
self.request_data['phone'] = '22222222222'
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 407)
# 输入用户名:空格
def test_05(self):
self.request_data['phone'] = ' '
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 407)
# 输入验证码:null
def test_06(self):
self.request_data['smsCode'] = ''
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 101)
# 输入验证码格式不正确:111
def test_07(self):
self.request_data['smsCode'] = '123'
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 401)
# 输入验证码错误:123456
def test_08(self):
self.request_data['smsCode'] = '123456'
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 401)
# 渠道为空
def test_09(self):
self.request_data['channel'] = ''
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 101)
# 渠道不存在
def test_10(self):
self.request_data['channel'] = 'XDSAGF'
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, -1)
"""
# 渠道:PC 渠道号:android 1000
def test_12(self):
self.request_data['channel'] = 'PC'
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 0)
# 渠道id:为空
def test_13(self):
self.request_data['channelId'] = ''
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 0)
# 渠道id:不存在
def test_14(self):
self.request_data['channelId'] = 8000
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 0)
# 渠道id:类型不正确
def test_15(self):
self.request_data['channelId'] = str('1000')
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 0)
"""
# 渠道key不存在
def test_16(self):
del self.request_data['channel']
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 101)
"""
# 渠道id:为空
def test_17(self):
del self.request_data['channelId']
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 0)
"""
# 非必填字段校验
def test_18(self):
del self.request_data['debug']
del self.request_data['device']
del self.request_data['osVersion']
del self.request_data['appVersion']
del self.request_data['privacyPolicy']
data = Request().request(self.caseid, self.header, self.request_data)
print(data)
ErrorCode().check_data(self.caseid, data, 0)
"""
# debug模式校验 + 正式账号
def test_19(self):
self.request_data['debug'] = 0
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 0)
"""
# 非debug模式 + 测试账号
def test_20(self):
self.request_data['phone'] = '00109876543'
self.request_data['debug'] = 0
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 407)
# debug模式 + 测试账号
def test_21(self):
self.request_data['phone'] = '00109876543'
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 0)
# 渠道id:没有确认隐私协议
# def test_22(self):
# self.request_data['privacyPolicy'] = 0
# data = Request().request(self.caseid, self.header, self.request_data)
# print(data)
# ErrorCode().check_data(self.caseid, data, 0)
# 输入验证码格式过期:
@unittest.skipIf(OpererionData().get_is_run('login-001') is True, 'skip') # 判断是否跳过执行
def test_0100(self):
data = Request().request(self.caseid, self.header, self.request_data)
ErrorCode().check_data(self.caseid, data, 401)
二、使用DDT进行处理,代码如下
说明:
大致意思就是把所有的数据取出来,然后参数化之后循环执行用例
import unittest
import json
from ddt import ddt, data, unpack
from tools import do_excel
from tools import read_config
from basic import request, log_info
# 调用需要使用到的参数信息方法
config = read_config.ReadConfig()
sheets_name = config.get_data(read_config.ReadConfig().get_data("Env", "env"), "sheets_name")
do_excel = do_excel.DoExcel()
my_log = log_info.MyLog()
@ddt
class TestCase(unittest.TestCase):
# 传入表单的数据
@data(*(do_excel.excel_data()["Account"]))
def test_account(self, account_data):
try:
self.response_data = request.Request().run_main(account_data)
my_log.info(self.response_data)
self.assertEqual(json.loads(self.response_data)["resultCode"],
str(account_data["ExpectCode"]),
"Request Fail")
if account_data["ExpectData"] is not None:
expect_data = eval(account_data["ExpectData"])
for item in expect_data:
self.assertEqual(self.response_data["data"][item],
expect_data[item],
"{} is not expect".format(item))
self.result = "Pass"
except Exception as e:
my_log.error(e)
print("ERROR:{}".format(e))
self.result = "Fail"
finally:
do_excel.write_excel(case_id=account_data["Case_ID"], response_data=self.response_data, result=self.result)
my_log.info("Result has write in excel")
if __name__ == '__main__':
unittest.main()