diff options
Diffstat (limited to 'cases/conftest.py')
| -rw-r--r-- | cases/conftest.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/cases/conftest.py b/cases/conftest.py new file mode 100644 index 00000000..567aee1d --- /dev/null +++ b/cases/conftest.py @@ -0,0 +1,96 @@ +import time +import pytest +from common.ui_common.login_logout.loginout import LogInOut +import time +import atexit +import sys +import os +import signal +import configparser +from config.workpath import workdir +from selenium import webdriver +from common.driver_common.mywebdriver import MyWebDriver +driver = None #全局变量用户保存webdirver实例 + +def my_driver(): + print("\n用例开始时执行。。。") + global driver + # 初始化,负责远程用户登录 + loginout_parse = configparser.ConfigParser() + loginout_parse_dir = os.path.join(workdir, "config", "ui_conf", "loginout.ini") + loginout_parse.read(loginout_parse_dir, encoding="utf-8") + remote_url = loginout_parse.get("remote_url", "url") + chrome_option = webdriver.ChromeOptions() + driver = MyWebDriver( + command_executor=remote_url, + options=chrome_option + ) + #driver.implicitly_wait(2) + driver.maximize_window() + return driver + +def setup(): + global driver + driver = my_driver() + loginout = LogInOut(driver) + loginout.login() + +def teardown(): + global driver + if driver: + print("\n用例结束时执行。。。") + driver.quit() + time.sleep(1) + +def demo_fixture(): + global driver + setup() + yield driver + teardown() + +def pytest_collection_modifyitems(items): + """ + 测试用例收集完成时,将收集到的name和nodeid的中文显示在控制台上,中文转换 + https://www.cnblogs.com/canglongdao/p/13418305.html + """ + for i in items: + i.name = i.name.encode("utf-8").decode("unicode_escape") + i._nodeid = i.nodeid.encode("utf-8").decode("unicode_escape") + +#处理ctrl+c中断 +def handle_interrupt(sinnum, frame): + global driver + print(driver, "主动中断") + if driver: + driver.close() + exit(1) + +#注册 Ctrl+C中断处理函数 +signal.signal(signal.SIGINT, handle_interrupt) + + +""" +# 自定义插件 +class CtrlCPlugin: + def __init__(self): + self.interrupted = False + + def pytest_runtest_protocol(self, item, nextitem): + if self.interrupted: + pytest.skip("Ctrl+C 中断") + +ctrl_c_plugin = CtrlCPlugin() + +# 注册插件 +def pytest_configure(config): + config.pluginmanager.register(ctrl_c_plugin) + +# 注册 Ctrl+C 中断处理函数 +def handle_interrupt(signum, frame): + ctrl_c_plugin.interrupted = True + signal.signal(signal.SIGINT, signal.SIG_DFL) # 恢复默认 Ctrl+C 处理 + +# 注册 Ctrl+C 中断处理函数 +signal.signal(signal.SIGINT, handle_interrupt) +"""
\ No newline at end of file |
