forked from PAWPAW/lib_rgb
整合测试框架
- 整合了原有的功能用例与接口测试
This commit is contained in:
82
testcases/conftest.py
Executable file
82
testcases/conftest.py
Executable file
@@ -0,0 +1,82 @@
|
||||
import time
|
||||
from _pytest import terminal
|
||||
import os
|
||||
import pytest
|
||||
import sys
|
||||
from commons.check import Check
|
||||
from commons.logger_ext import Logger
|
||||
|
||||
|
||||
# 获取当前文件的绝对路径
|
||||
current_file_path = os.path.abspath(__file__)
|
||||
|
||||
# 获取当前文件的上上上一级目录路径
|
||||
grandparent_directory = os.path.dirname(os.path.dirname(os.path.dirname(current_file_path))).replace('\\', '/')
|
||||
|
||||
|
||||
|
||||
# 测试结果路径
|
||||
test_result_file_path = os.path.join(grandparent_directory, "reports", "test_result", "test_result.txt")
|
||||
|
||||
|
||||
def pytest_terminal_summary(terminalreporter, exitstatus, config):
|
||||
# 收集测试结果
|
||||
passed = len([i for i in terminalreporter.stats.get('passed', []) if i.when != 'teardown'])
|
||||
failed = len([i for i in terminalreporter.stats.get('failed', []) if i.when != 'teardown'])
|
||||
error = len([i for i in terminalreporter.stats.get('error', []) if i.when != 'teardown'])
|
||||
skipped = len([i for i in terminalreporter.stats.get('skipped', []) if i.when != 'teardown'])
|
||||
# total = terminalreporter._numcollected
|
||||
total = passed + failed + error + skipped
|
||||
success_rate = passed / (total - skipped) * 100
|
||||
failure_rate = failed / (total - skipped) * 100
|
||||
error_rate = error / (total - skipped) * 100
|
||||
skip_rate = skipped / total * 100
|
||||
# terminalreporter._sessionstarttime 会话开始时间
|
||||
duration = time.time() - terminalreporter._sessionstarttime
|
||||
# print('total times: %.2f' % duration, 'seconds')
|
||||
|
||||
failure_case_list = []
|
||||
if failed == 0:
|
||||
failure_case_list = []
|
||||
else:
|
||||
for rep in terminalreporter.stats.get('failed', []):
|
||||
file_path = rep.nodeid.split("::")[0]
|
||||
failure_case_list.append(file_path)
|
||||
|
||||
with open(test_result_file_path, "w") as fp:
|
||||
fp.write("TOTAL=%s" % total + "\n")
|
||||
fp.write("PASSED=%s" % passed + "\n")
|
||||
fp.write("FAILED=%s" % failed + "\n")
|
||||
fp.write("ERROR=%s" % error + "\n")
|
||||
fp.write("SKIPPED=%s" % skipped + "\n")
|
||||
fp.write("SUCCESS_RATE=%.2f%%" % success_rate + "\n")
|
||||
fp.write("FAILURE_RATE=%.2f%%" % failure_rate + "\n")
|
||||
fp.write("ERROR_RATE=%.2f%%" % error_rate + "\n")
|
||||
fp.write("SKIP_RATE=%.2f%%" % skip_rate + "\n")
|
||||
fp.write("TOTAL_TIMES=%.2fs" % duration + "\n")
|
||||
fp.write("FAILURE_CASE_PATH=%s" % failure_case_list + "\n")
|
||||
fp.close()
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def get_logger_check(request):
|
||||
filename = request.node.name
|
||||
logger = Logger(name=filename)
|
||||
check = Check(logger)
|
||||
request.cls.logger = logger
|
||||
request.cls.check = check
|
||||
|
||||
|
||||
# 添加命令行参数为功能测试
|
||||
def pytest_addoption(parser):
|
||||
parser.addoption("--function", action="store_true")
|
||||
|
||||
@pytest.fixture
|
||||
def function(pytestconfig):
|
||||
return pytestconfig.getoption("function")
|
||||
|
||||
@pytest.fixture
|
||||
def function(pytestconfig):
|
||||
# 使用 pytestconfig.getoption 方法尝试获取 'function' 参数
|
||||
# 如果参数不存在,则返回一个默认值,例如 False
|
||||
return pytestconfig.getoption("function", default=False)
|
||||
Reference in New Issue
Block a user