def test_api(self, item): print(test_data) # print("url是:{0},data是:{1},header是:{2},http_method是:{3}".format(item['url'],eval(item['data']),item["header"],item['http_method'])) print("url value:{0}".format(type(item['url']))) print("data value:{0}:".format(type(item['data']))) print("header value:{0}:".format(type(eval(item['header'])))) # print("params value:{0}:".format(type(eval(item['params'])))) print("http_method value:{0}:".format(type(item['http_method']))) res = HttpRequest.http_request(item['url'], item['data'], eval(item["header"]), item['http_method'], getattr(GetData, "Cookie")) if res.cookies: setattr(GetData, 'Cookie', res.cookies) try: self.assertEqual(item['excepted_code'], res.json()["code"]) TestResult = 'PASS' #成功的 except AssertionError as e: TestResult = 'Failed' #失败的 my_logger.info("执行用例出错:{}".format(e)) raise e finally: DoExcel.write_back(test_case_path, 'login', item['case_id'] + 1, str(res.json()), TestResult) print('获取到的结果是:{}'.format(res.json()))
def test_api(self, item): #请求之前完成loan_id的替换 if item['data'].find('${loan_id}') != -1: if getattr(GetData, 'load_id') == None: query_sql = 'select Id from loan where Member ID={0}'.format( getattr(GetData, 'loan_member_id')) loan_id = DoMysql().do_mysql(query_sql)[0][0] item['data'] = item['data'].replace('${loan_id}', str(loan_id)) setattr(GetData, 'load_id', loan_id) #利用反射存储结果 else: item['data'] = item['data'].replace( '${loan_id}', str(getattr(GetData, 'loan_id'))) res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetData, 'Cookie')) if res.cookies: setattr(GetData, 'Cookie', res.cookies) try: self.assertEqual(str(item['expected']), res.json()['code']) TestResult = 'PASS' except AssertionError as e: TestResult = 'Failed' my_logger.info('执行用列出错:{0}'.format(e)) raise e finally: DoExcel.write_back(test_case_path, item['sheet_name'], item['case_id'] + 1, str(res.json()), TestResult) my_logger.error("获取到的结果是:{0}".format(res.json()))
def run(test_data): for item in test_data: # print(item['data_type']) # print(item['data']) # print(type(item['data'])) print("正在执行的用例是{0}".format(item['title'])) if item['title'] == '修改管理员': newid = getattr(GetAdminId, 'Adminid') item['data']['id'] = newid res = HttpRequests( item['url'], item['method'], data=item['data'], cookies=getattr(GetCookie, 'Cookie')).send_request(type=item['data_type']) if res.cookies: setattr(GetCookie, 'Cookie', res.cookies) elif str(res.json()).find('id') != -1 and item['title'] == '添加管理员': setattr(GetAdminId, 'Adminid', res.json()['id']) print("请求的结果是{0}".format(res.json())) DoExcel().write_back(item['caseid'] + 1, 8, str(res.json()), sheet_name=item['sheet_name']) if int(res.json()['ret']) == item['expect']: test_result = 'pass' else: test_result = 'fail' DoExcel().write_back(item['caseid'] + 1, 9, test_result, sheet_name=item['sheet_name'])
def test_api(self, item): print(item) print(type(item)) print(item["model"]) print(type(item["model"])) if item["model"] == "login_notice": global accessToken res_login = HttpRequest.http_request(item['url'], item['data'], eval(item["header"]), eval(item["params"]), item['http_method'], getattr(GetData, "Cookie")) accessToken = res_login.json()["accessToken"] print("accessToken 值为".format(accessToken)) if res_login.cookies: setattr(GetData, 'Cookie', res_login.cookies) try: self.assertEqual(item['excepted_code'], res_login.json()["code"]) TestResult = 'PASS' # 成功的 except AssertionError as e: TestResult = 'Failed' # 失败的 my_logger.info("执行用例出错:{}".format(e)) raise e finally: DoExcel.write_back(test_case_path, 'notice', item['case_id'] + 1, str(res_login.json()), TestResult) print('获取到的结果是:{}'.format(res_login.json())) elif item["model"] == "notice": sid = accessToken res_notice = HttpRequest.http_request( item['url'], item['data'], eval(item["header"].replace( "5EFCC60C2373B9C1FC526F64CAF24610EFA2BFC1C056AF9C92AFC48CE14EE8D8B13942D7F20742E379D7A6F89DB87D72", sid)), eval(item["params"]), item['http_method'], getattr(GetData, "Cookie")) if res_notice.cookies: setattr(GetData, 'Cookie', res_notice.cookies) try: self.assertEqual(item['excepted_code'], eval(res_notice.json()["retHead"])) TestResult = 'PASS' # 成功的 except AssertionError as e: TestResult = 'Failed' # 失败的 my_logger.info("执行用例出错:{}".format(e)) raise e finally: # DoExcel.write_back(test_case_path,'notice',item['case_id']+1,str(res_notice.json()),TestResult) print('获取到的结果是:{}'.format(res_notice.json()))
def test_api(self,item): res=HttpRequest.http_request(item['method'],item['url'],eval(item['data']),getattr(GetCookie,'Cookie')) if res.cookies: #利用反射存储cookie值 setattr(GetCookie,'Cookie',res.cookies) try: self.assertEqual(str(item['expected']),res.json()['resultcode']) TestResult='PASS' except AssertionError as e: TestResult='Failed' MyLog.error("执行用例出错:{0}".format(e)) raise e finally: DoExcel.write_back(test_case_path,item['sheet_name'],item['case_id']+1,res.text,TestResult) MyLog.info("获取到的结果是:{0}".format(res.text))
def test_api(self, item): res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetCookie, "Cookie")) try: self.assertEqual(item['excepted'], res.json()["status"]) TestResult = 'PASS' #成功的 except AssertionError as e: TestResult = 'Failed' #失败的 print("执行用例出错:{}".format(e)) raise e finally: DoExcel.write_back(test_case_path, 'login', item['case_id'] + 1, str(res.json()), TestResult) print('获取到的结果是:{}'.format(res.json()))
def test_api(self, item): res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetCookie, 'Cookie')) try: self.assertEqual(item['expected'], res.json()['stat']) TestResult = 'PASS' except Exception as e: TestResult = 'Failed' print("执行用例出错:{0}".format(e)) raise e finally: DoExcel.write_back(test_case_path, 'login', item['case_id'] + 1, str(res.json()), TestResult) print("获取到结果是:{0}".format(res.json()))
class TestLogin(BaseCase): caseInfoList = DoExcel.getCaseDataFromExcel(test_data_path, "login") @allure.story("测试登录接口") @pytest.mark.parametrize("case_info", caseInfoList) def test_login(self, case_info): with allure.step("对当前的case进行参数化替换"): # 对当前的case进行参数化替换 case_info = self.params_replace_current_case_info(case_info) with allure.step("发起请求"): res = HttpRequest().http_request(case_info) # 断言 with allure.step("响应结果断言"): self.assert_expected(case_info, res) member_id = jmespath.search("data.id", res.json()) if member_id != None: with allure.step("保存token到环境变量里"): token = jmespath.search("data.token_info.token", res.json()) if case_info["case_id"] == 1: # 2、保存到环境变量中 setattr(RelyData, "token1", token) elif case_info["case_id"] == 2: # 2、保存到环境变量中 setattr(RelyData, "token2", token) elif case_info["case_id"] == 3: # 2、保存到环境变量中 setattr(RelyData, "token3", token)
def test_api(self, item): res = HttpRequest.http_request(item['url'], json.dumps(eval(item['data'])), item['http_method'], eval(item['header'])) try: self.assertEqual('0', res.json()['success']) TestResult = 'PASS' except AssertionError as e: TestResult = 'FAILED' my_logger.info('执行出错:{0}'.format(e)) raise e finally: DoExcel.write_back(tool_path.test_data_path, item['sheet_name'], int(item['case_id']) + 1, str(res.json()), TestResult) print('获取的结果是:{0}'.format(res.json()['msg']))
def test_api(self, item): res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetData, 'Cookie')) if res.cookies: #利用反射存取cookies setattr(GetData, 'Cookie', res.cookies) try: self.assertEqual(item['expected'], res.json()['stat']) TestResult = 'PASS' except Exception as e: TestResult = 'Failed' my_logger.info("执行用例出错:{0}".format(e)) raise e finally: DoExcel.write_back(test_case_path, item['sheet_name'], item['case_id'] + 1, str(res.json()), TestResult) my_logger.error("获取到结果是:{0}".format(res.json()))
class TestRegister(BaseCase): caseInfoList = DoExcel.getCaseDataFromExcel(test_data_path, "register") @allure.story("注册新账号") @pytest.mark.parametrize("caseInfo", caseInfoList) # 替代ddt def test_register(self, caseInfo): with allure.step("读数据库获取没有注册过的手机号码"): # 读数据库获取没有注册过的手机号码 if caseInfo["case_id"] == 1: mobile_phone = self.get_random_phone() setattr(RelyData, "mobile_phone1", mobile_phone) elif caseInfo["case_id"] == 2: mobile_phone = self.get_random_phone() setattr(RelyData, "mobile_phone2", mobile_phone) elif caseInfo["case_id"] == 3: mobile_phone = self.get_random_phone() setattr(RelyData, "mobile_phone3", mobile_phone) with allure.step("对当前的case进行参数化替换"): # 对当前的case进行参数化替换 case_info = self.params_replace_current_case_info(caseInfo) with allure.step("发起请求"): res=HttpRequest().http_request(case_info) with allure.step("响应结果断言"): # 1、响应结果断言 self.assert_expected(case_info, res) with allure.step("数据库断言"): # 2、数据库断言 self.assert_SQL(case_info) memberId = jmespath.search("data.id", res.json()) if memberId != None: with allure.step("保存手机号、用户id、密码到环境变量里"): mobile_phone = jmespath.search("data.mobile_phone", res.json()) # 3、注册成功的密码--从用例数据里面 pwd = case_info['input_params']['pwd'] if case_info["case_id"] == 1: setattr(RelyData, "mobile_phone1", mobile_phone) setattr(RelyData, "member_id1", memberId) setattr(RelyData, "pwd1", pwd) elif case_info["case_id"] == 2: # 2、保存到环境变量中 setattr(RelyData, "mobile_phone2", mobile_phone) setattr(RelyData, "member_id2", memberId) setattr(RelyData, "pwd2", pwd) elif case_info["case_id"] == 3: # 2、保存到环境变量中 setattr(RelyData, "mobile_phone3", mobile_phone) setattr(RelyData, "member_id3", memberId) setattr(RelyData, "pwd3", pwd)
def test_api(self, item): my_logger.info('开始执行用例{0}:{1}'.format(item['case_id'], item['title'])) loan_member_id = getattr(GetData, 'loan_member_id') # 请求之前完成load_id的替换 if item['data'].find('${loan_id}') != -1: if getattr(GetData, 'loan_id') is None: query_sql = 'select max(id) from loan where member_id={0}'.format(loan_member_id) loan_id = DoMysql().do_mysql(query_sql)[0][0] item['data'] = item['data'].replace('${loan_id}', str(loan_id)) setattr(GetData, 'loan_id', loan_id) my_logger.info('loan_id为:{0}'.format(loan_id)) else: my_logger.info(getattr(GetData, 'loan_id')) item['data'] = item['data'].replace('${loan_id}', str(getattr(GetData, 'loan_id'))) my_logger.info('获取到的请求数据是{0}'.format(item['data'])) if item['check_sql'] != None: # 当你的check_sql的语句不为空时 就可以进行数据库校验 my_logger.info(item['check_sql']) my_logger.info('此条用例需要做数据库校验:{0}'.format(item['title'])) query_sql = eval(item['check_sql'])['sql'] # 拿到Excel中 字典里面的sql语句 Before_Amount = DoMysql.do_mysql(query_sql, 1)[0] my_logger.info('用例:{0}请求之前的余额是{1}'.format(item['title'], Before_Amount)) my_logger.info('---------------------开始http 接口请求---------------------') res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetData, 'Cookie')) my_logger.info('---------------------完成http 接口请求---------------------') After_Amount = DoMysql().do_mysql(query_sql, 1)[0] my_logger.info('用例:{0}请求之后的余额是{1}'.format(item['title'], After_Amount)) if float(abs(Before_Amount-After_Amount+1000)) == float(eval(item['data'])['amount']): my_logger.info('数据库余额校验通过') check_sql_result = '数据库检查通过' else: my_logger.info('数据库余额校验未通过') check_sql_result = '数据库检查未通过' # 写回结果 DoExcel.write_back(project_path.test_case_path, item['sheet_name'], item['case_id'] + 1, 10, check_sql_result) else: my_logger.info('此条用例不需要做数据库校验:{0}'.format(item['title'])) my_logger.info('---------------------开始http 接口请求---------------------') res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetData, 'Cookie')) my_logger.info('---------------------完成http 接口请求---------------------') if res.cookies: # 利用反射存储cookie值 setattr(GetData, 'Cookie', res.cookies) try: self.assertEqual(str(item['expected']), res.json()['code']) test_result = 'PASS' # 成功的 except AssertionError as e: test_result = 'Failed' # 失败的 my_logger.error("执行用例出错:{0}".format(e)) raise e finally: # 不管try是错还是对,finally里面的代码是一定会执行的 DoExcel.write_back(project_path.test_case_path, item['sheet_name'], item['case_id'] + 1, 8, str(res.json())) DoExcel.write_back(project_path.test_case_path, item['sheet_name'], item['case_id'] + 1, 9, test_result) my_logger.info("获取到的结果是:{0}".format(res.json())) my_logger.info('----------------------------------------------------------------------------------\n')
class TestInvest(BaseCase): caseInfoList = DoExcel.getCaseDataFromExcel(test_data_path, "invest") @allure.story("测试投资接口") @pytest.mark.parametrize("case_info", caseInfoList) def test_invest(self, case_info): with allure.step("对当前的case进行参数化替换"): case_info = self.params_replace_current_case_info(case_info) with allure.step("发起请求"): res = HttpRequest().http_request(case_info) # 断言 with allure.step("响应结果断言"): self.assert_expected(case_info, res)
def test_api(self, item): print("测试开始:{0}".format(item['title'])) #测试标题 res = HttpRequest().http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetData, 'Cookie')) #获取请求 if res.cookies: #利用反射获取cookies setattr(GetData, 'Cookie', res.cookies) try: #进行断言 self.assertEqual(str(item['expect']), res.json()['code']) TestResult = 'PASS' except Exception as e: TestResult = 'Failed' print("执行用例出错:{}".format(e)) raise e finally: #将测试结果返回文档中 DoExcel().write_back(case_path, item['sheet_name'], item['case_id'] + 1, str(res.json()), TestResult)
def test_api(self, item): global TestResult res = HttpRequest().http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetData, "Cookie")) actual_code = res.json()['code'] # 实际结果 if res.cookies: # 如果有cookies,那就res.cookies赋值给Cookie属性 setattr(GetData, 'Cookie', res.cookies) # 反射 try: self.assertEqual(str(item['expected_code']), actual_code) print("用例{0}正确!".format(item['case_id']), item['title']) TestResult = 'PASS' except AssertionError as e: print("用例错误!错误原因是{0}:".format(e)) TestResult = 'Failed' raise e # 异常处理完后记得抛出 finally: # 不管怎样都得写入Excel DoExcel().write_back(test_case_path, item['sheet_name'], item['case_id'] + 1, str(res.json()), TestResult) print("响应体:", "\n", res.json())
class TestAddLoan(BaseCase): caseInfoList = DoExcel.getCaseDataFromExcel(test_data_path, "addLoan") @allure.story("测试添加项目接口") @pytest.mark.parametrize("case_info", caseInfoList) def test_add_loan(self, case_info): with allure.step("对当前的case进行参数化替换"): # 对当前的case进行参数化替换 case_info = self.params_replace_current_case_info(case_info) with allure.step("发起请求"): res = HttpRequest().http_request(case_info) # 断言 with allure.step("响应结果断言"): self.assert_expected(case_info, res) memberId = jmespath.search("data.member_id", res.json()) if memberId != None: loan_id = jmespath.search("data.id", res.json()) # 2、保存到环境变量中 setattr(RelyData, "loan_id", loan_id)
# -*- coding:utf-8 -*- #作者 :Lyle.Li #时间 :2020/4/16 18:11 #文件 :test_http_request.py import unittest from tools.http_request import HttpRequest from tools.do_excel import DoExcel from ddt import ddt, data from tools.get_data import GetData from tools.project_path import * test_data = DoExcel().get_data(case_path) #测试数据获取文件 @ddt #进行数据分离 class TestHttpRequest(unittest.TestCase): def setUp(self): pass @data(*test_data) def test_api(self, item): print("测试开始:{0}".format(item['title'])) #测试标题 res = HttpRequest().http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetData, 'Cookie')) #获取请求 if res.cookies: #利用反射获取cookies setattr(GetData, 'Cookie', res.cookies) try: #进行断言 self.assertEqual(str(item['expect']), res.json()['code']) TestResult = 'PASS' except Exception as e:
def login_data(self): fileName = os.path.join(test_data_path,"login_data.xlsx") return DoExcel(fileName,"login").read_excel()
#作者:HP #日期:2020-03-20 20:48 #文件:test_http_request import unittest from tools.http_request import HttpRequest from tools.get_data import GetCookie from ddt import ddt, data # from tools.do_excel import DoExcel from tools.project_path import * test_data = DoExcel.get_data(test_case_path, 'create') #执行登录用例 @ddt class TestHttpRequest(unittest.TestCase): def setUp(self, ): pass @data(*test_data) def test_api(self, item): res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetCookie, 'Cookie')) try: self.assertEqual(item['expected'], res.json()['stat']) TestResult = 'PASS' except Exception as e: TestResult = 'Failed' print("执行用例出错:{0}".format(e)) raise e
#!/usr/bin/env python # -*- coding: UTF-8 -*- """Script content introduction __author__ = 'ziying' __date__ = '2020/11/1 14:23' __function__ = '' """ import pytest import os from common.until.register import register from tools.do_excel import DoExcel from tools.logger import logger from config.conf import DATA_DIR do_excel = DoExcel(DATA_DIR, "register") TestData = do_excel.get_data() do_excel.close_file() @pytest.mark.usefixtures("fix_class_level") class TestRegister: @pytest.mark.usefixtures("fix_function_level") @pytest.mark.register @pytest.mark.parametrize("case", TestData) # 读取excel文件中的测试用例 def test_register(self, case): logger.info("测试数据:{}".format(eval(case["Data"]))) logger.info("开始执行第 {} 条用例:{}!".format(case["CaseID"], case["Title"])) # print("开始执行第 {} 条用例:{},测试数据:{}!".format(case["CaseID"], case["Title"], eval(case["Data"]))) res = register(
#作者:HP #日期:2020-03-20 20:48 #文件:test_http_request import unittest from tools.http_request import HttpRequest from tools.get_data import GetCookie from ddt import ddt, data # from tools.do_excel import DoExcel from tools.project_path import * test_data = DoExcel.get_data(test_case_path, 'login') #执行登录用例 @ddt class TestHttpRequest(unittest.TestCase): def setUp(self, ): pass @data(*test_data) def test_api(self, item): res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetCookie, 'Cookie')) try: self.assertEqual(item['expected'], res.json()['stat']) TestResult = 'PASS' except Exception as e: TestResult = 'Failed' print("执行用例出错:{0}".format(e)) raise e
# @Author : demi # @Email : [email protected] # @File : http_request_testcase.py import unittest from tools.http_request import HttpRequest from tools.get_data import GetData from ddt import ddt, data # 列表嵌套列表 或者是列表嵌套字典 from tools.do_excel import DoExcel from tools import project_path from tools.my_log import MyLog from tools.do_mysql import DoMysql test_data = DoExcel.get_data(project_path.test_case_path) my_logger = MyLog() @ddt class HttpRequestTestcase(unittest.TestCase): def setUp(self): pass @data(*test_data) def test_api(self, item): my_logger.info('开始执行用例{0}:{1}'.format(item['case_id'], item['title'])) loan_member_id = getattr(GetData, 'loan_member_id') # 请求之前完成load_id的替换 if item['data'].find('${loan_id}') != -1:
# -*- conding: utf-8 -*- # @Time :2019/7/30 15:09 # Author :chengjin # @Email :[email protected] # @File :test_http_request.py import unittest from tools.project_path import * from tools.http_request import HttpRequest from tools.get_cookie import GetCookie from ddt import ddt, data #列表嵌套列表 或者列表嵌套字典 from tools.do_excel import DoExcel test_data = DoExcel.get_data(test_case_path, "login") @ddt class TestHttpRequest(unittest.TestCase): def setUp(self): pass @data(*test_data) def test_api(self, item): res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetCookie, "Cookie")) try: self.assertEqual(item['excepted'], res.json()["status"]) TestResult = 'PASS' #成功的 except AssertionError as e: TestResult = 'Failed' #失败的 print("执行用例出错:{}".format(e))
import unittest from tools.http_request import HttpRequests from tools.get_global import GetCookie, GetAdminId, GetAdmin from ddt import ddt, data from tools.read_config import ReadConfig from tools.do_excel import DoExcel from tools.print_log import initLogging from tools.project_path import log_path, case_config_path from tools.handle_sqlite import HandleSqlite test_data = DoExcel().get_data() # print(test_data) # print(test_data) @ddt class TestHttp(unittest.TestCase): result_list = [] test_result_list = [] def setUp(self): print('start') def tearDown(self): print('end') @classmethod def tearDownClass(cls, result_list=result_list,
import unittest from tools.do_excel import DoExcel from tools.project_path import * from ddt import * from tools.http_request import HttpRequest from tools.get_cookie import GetCookie from tools.my_log import MyLog test_data=DoExcel.get_data(test_case_path) @ddt class TestHttpRequest(unittest.TestCase): def setUp(self): pass @data(*test_data) def test_api(self,item): res=HttpRequest.http_request(item['method'],item['url'],eval(item['data']),getattr(GetCookie,'Cookie')) if res.cookies: #利用反射存储cookie值 setattr(GetCookie,'Cookie',res.cookies) try: self.assertEqual(str(item['expected']),res.json()['resultcode']) TestResult='PASS' except AssertionError as e: TestResult='Failed' MyLog.error("执行用例出错:{0}".format(e)) raise e finally: DoExcel.write_back(test_case_path,item['sheet_name'],item['case_id']+1,res.text,TestResult) MyLog.info("获取到的结果是:{0}".format(res.text)) def tearDown(self): pass if __name__ == '__main__':
# -*- conding: utf-8 -*- # @Time :2019/7/30 15:09 # Author :chengjin # @Email :[email protected] # @File :test_http_request.py import unittest from tools.project_path import * from tools.http_request import HttpRequest from tools.get_cookie import GetCookie from ddt import ddt, data #列表嵌套列表 或者列表嵌套字典 from tools.do_excel import DoExcel test_data = DoExcel.get_data(test_case_path, "recharge") @ddt class TestHttpRequest(unittest.TestCase): def setUp(self): pass @data(*test_data) def test_api(self, item): res = HttpRequest.http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetCookie, "Cookie")) try: self.assertEqual(item['excepted'], res.json()["status"]) TestResult = 'PASS' #成功的 except AssertionError as e: TestResult = 'Failed' #失败的 print("执行用例出错:{}".format(e))
def test_api(self, item): # 获取主机地址 HOST = ReadConfig.get_config(case_config_path, 'ADDRESS', 'host') item['url'] = HOST + item['url'] # 获取url #提交data为空,关联值get_value不为空 if item['data'] == None and item['get_value'] != None: if type(eval(item['get_value'])) == dict: res = HttpRequest().http_request(item['url'], None, item['method'], item['type'], headers=getattr( GetToken, "header")) if res.json()['msg'] == 'OK': get_data = eval(item['get_value']) for keys in get_data.keys(): key = keys value = get_data[key] add = 'res.json()' + value add = eval(add) OperaConfig.write_config(file_path, key, key, add) try: self.assertEqual(item['expected'], res.json()['msg']) TestResult = 'PASS' except AssertionError as e: TestResult = 'FAIL' print("执行用例出错:{0}".format(e)) raise e finally: #写回结果(str(res.json()),excel只能写字符串,数字,不能写字典 DoExcel(test_case_path, item['sheet_name']).write_back( item['case_id'] + 1, str(res.json()), TestResult) print("获取到的结果是:{0}".format(res.json())) # 提交data不为空,关联值get_value不为空(字符串:使用值) elif item['data'] != None and item['get_value'] != None and type( item['get_value']) == str: data1 = OperaConfig.read_config(file_path, item['get_value'], item['get_value']) #获取配置文件值 if item['url'].find(item['get_value']) != -1: url = item['url'].replace("{{" + item['get_value'] + "}}", data1) res = HttpRequest().http_request(url, eval(item['data']), item['method'], item['type'], headers=getattr( GetToken, "header")) elif item['data'] != None and item['data'].find( item['get_value']) != -1: data = item['data'].replace("{{" + item['get_value'] + "}}", data1) res = HttpRequest().http_request(item['url'], eval(data), item['method'], item['type'], headers=getattr( GetToken, "header")) try: self.assertEqual(item['expected'], res.json()['msg']) TestResult = 'PASS' except AssertionError as e: TestResult = 'FAIL' print("执行用例出错:{0}".format(e)) raise e finally: #写回结果(str(res.json()),excel只能写字符串,数字,不能写字典 DoExcel(test_case_path, item['sheet_name']).write_back(item['case_id'] + 1, str(res.json()), TestResult) print("获取到的结果是:{0}".format(res.json())) # 提交data为空,关联值get_value为空(普通get) elif item['data'] == None and item['get_value'] == None: res = HttpRequest().http_request(item['url'], None, item['method'], item['type'], headers=getattr( GetToken, "header")) try: self.assertEqual(item['expected'], res.json()['msg']) TestResult = 'PASS' except AssertionError as e: TestResult = 'FAIL' print("执行用例出错:{0}".format(e)) raise e finally: # 写回结果(str(res.json()),excel只能写字符串,数字,不能写字典 DoExcel(test_case_path, item['sheet_name']).write_back(item['case_id'] + 1, str(res.json()), TestResult) print("获取到的结果是:{0}".format(res.json())) # 其他 else: res = HttpRequest().http_request(item['url'], eval(item['data']), item['method'], item['type'], headers=getattr( GetToken, "header")) try: self.assertEqual(item['expected'], res.json()['msg']) TestResult = 'PASS' except AssertionError as e: TestResult = 'FAIL' print("执行用例出错:{0}".format(e)) raise e finally: #写回结果(str(res.json()),excel只能写字符串,数字,不能写字典 DoExcel(test_case_path, item['sheet_name']).write_back(item['case_id'] + 1, str(res.json()), TestResult) print("获取到的结果是:{0}".format(res.json()))
from ddt import ddt, data # 数据类型必须是列表嵌套列表,或者列表嵌套字典 import unittest from tools.http_request import HttpRequest import json import tools.project_path as tool_path from tools.do_excel import DoExcel from test_result.log.api_logging import MyLog my_logger = MyLog() test_data = DoExcel.get_data(tool_path.test_data_path) @ddt class TestHttpRequest(unittest.TestCase): def setUp(self): pass def tearDown(self): pass @data(*test_data) def test_api(self, item): res = HttpRequest.http_request(item['url'], json.dumps(eval(item['data'])), item['http_method'], eval(item['header'])) try: self.assertEqual('0', res.json()['success']) TestResult = 'PASS' except AssertionError as e: TestResult = 'FAILED'
# -*- coding: utf-8 -*- # @Author : Monster # @File : test_case.py import unittest from ddt import ddt, data from tools.http_request import HttpRequest from tools.do_excel import DoExcel from tools.get_token import GetToken from tools.project_path import * from tools.read_config import ReadConfig from tools.operation_config import OperaConfig test_data = DoExcel(test_case_path).get_data() #读取用例 @ddt class TestHttpRequest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: """ 登录获取(后台)token :return: """ # 获取主机地址 HOST = ReadConfig.get_config(case_config_path, 'ADDRESS', 'host') url = f'{HOST}/api/auth/oauth/user/token' param = {"username": "******", "password": "******"} header = { "Content-Type": "application/json;charset=UTF-8", "Authorization": "Basic QmFzZVBsYXRmb3JtOjEyMzQ1Ng==" }
def tearDownClass(cls, result_list=result_list, test_result_list=test_result_list): DoExcel().write_all_back(result_data=result_list, test_result_data=test_result_list)