summaryrefslogtreecommitdiff
path: root/cases/conftest.py
diff options
context:
space:
mode:
authorzhaokun <[email protected]>2023-11-08 13:44:25 +0800
committerzhaokun <[email protected]>2023-11-08 13:44:25 +0800
commit4e683d5703daf29810097b9961b5ce02420202ea (patch)
tree4ad01d46a7417a14a8c8a9045e95d0387cf24388 /cases/conftest.py
parent44ed57c3f0b5f83e2836aadeea34003f08867b08 (diff)
updatemain
Diffstat (limited to 'cases/conftest.py')
-rw-r--r--cases/conftest.py96
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