Преглед изворни кода

extracted server setup/teardown into fixture

Rodja Trappe пре 2 година
родитељ
комит
3c1bbdd2e8
3 измењених фајлова са 37 додато и 15 уклоњено
  1. 12 2
      tests/conftest.py
  2. 21 0
      tests/server.py
  3. 4 13
      tests/test_pages.py

+ 12 - 2
tests/conftest.py

@@ -3,6 +3,8 @@ import os
 
 import pytest
 
+from .server import Server
+
 
 @pytest.fixture
 def chrome_options(chrome_options):
@@ -14,13 +16,21 @@ def chrome_options(chrome_options):
 
 @pytest.fixture
 def selenium(selenium):
-    selenium.implicitly_wait(0.1)
+    selenium.implicitly_wait(2)
+    selenium.set_page_load_timeout(5)
     return selenium
 
 
-# original taken from https://github.com/theserverlessway/pytest-chrome/blob/master/tests/conftest.py
+@pytest.fixture()
+def server():
+    server = Server()
+    yield server
+    server.stop()
+
+
 @pytest.fixture
 def screenshot(selenium):
+    # original taken from https://github.com/theserverlessway/pytest-chrome/blob/master/tests/conftest.py
     def shot(name=''):
         directory = 'screenshots'
         if not os.path.exists(directory):

+ 21 - 0
tests/server.py

@@ -0,0 +1,21 @@
+import threading
+from time import sleep
+
+from nicegui import globals as nicegui_globals
+from nicegui import ui
+
+
+class Server():
+
+    def start(self):
+        self.thread = threading.Thread(target=ui.run, kwargs={'port': 3392, 'show': False, 'reload': False})
+        self.thread.start()
+        sleep(1)
+
+    def stop(self):
+        nicegui_globals.server.should_exit = True
+        self.thread.join()
+
+    @property
+    def base_url(self):
+        return 'http://localhost:3392'

+ 4 - 13
tests/test_pages.py

@@ -1,19 +1,10 @@
-import threading
-from time import sleep
+from nicegui import ui
 
-from nicegui import globals, ui
 
-
-async def test_title(selenium):
+async def test_title(server, selenium):
     @ui.page('/', title='My Custom Title')
     def page():
         ui.label('hello world')
-    # start new thread
-    thread = threading.Thread(target=ui.run, kwargs={'port': 3392, 'show': False, 'reload': False})
-    thread.start()
-    sleep(2)
-    selenium.get('http://localhost:3392')
+    server.start()
+    selenium.get(server.base_url)
     assert "My Custom Title" in selenium.title
-    print(globals)
-    globals.server.should_exit = True
-    thread.join()