12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- """
- Created: 2021/01/29
- """
- import sys
- import pytest
- import os
- import logging
- import time
- import json
- from bin.utils.sendApi import send_request
- from bin.utils.checkResult import check_result
- from bin.utils.initRelevance import init_relevance
- from bin.user import customer
- reload(sys)
- sys.setdefaultencoding('utf-8')
- def run_case(case_data, request, case_result):
- """
- 单个测试用例运行函数
- case_data: 表示为运行的函数
- request: 表示缓存区的内容
- case_result : 表示case的结果
- """
- logging.info('[%s]info:%s' % (case_data['test_name'], case_data['info']))
- logging.info('[%s]request_data:%s' % (case_data['test_name'], json.dumps(case_data, ensure_ascii=False)))
- if 'detail' in case_data.keys():
- logging.info(case_data['detail'])
- #step1 若为无效的用例,则直接跳过,基本废弃
- if case_data['invalid']:
- assert case_data['invalid'] == True
- return
- if 'skip' in case_data.keys() \
- and check_result(case_data['skip'],
- [(200, case_result[case_data['skip']['case_name']])]) == case_data['skip']['type']:
- assert True
- return
- # step2 有效测试用例的判断,动态替换参数
- cache_data = request.config.cache.get('cache_data', {})
- case_data, code = init_relevance(case_data, case_result, cache_data)
- assert code == True
- result = {}
- # step3: 自定义函数
- if case_data['custom']:
- func = 'customer.%s' % case_data['custom']
- try:
- result = eval(func)
- case_result[case_data['test_name']] = result[0]
- code = result[1]
- except Exception as e:
- logging.error(e)
- code = False
- finally:
- assert code == True
- else:#非用户自定义函数
- result = send_request(case_data)
- case_result[case_data['test_name']] = result[0][1]
- assert check_result(case_data['check'], result) == True
-
- #step4:断言执行成功,获取正确的结果,将其存储cache
- #存储的模式 [output][case_name]
- data = {}
- if 'output' in case_data.keys():
- key = "%s.%s" % (case_data['output'], case_data['test_name'])
- if key not in cache_data.keys():
- cache_data[key] = {}
- if not case_data['custom']:
- data = result[0][1]
- else:
- data = result[0]
- cache_data[key] = data
- request.config.cache.set('cache_data', cache_data)
- time.sleep(case_data['waittime'])
|