conftest.py 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # Copyright 2023 Avaiga Private Limited
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  4. # the License. You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  9. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  10. # specific language governing permissions and limitations under the License.
  11. import os
  12. import sys
  13. from importlib.util import find_spec
  14. from pathlib import Path
  15. import pandas as pd # type: ignore
  16. import pytest
  17. from flask import Flask, g
  18. def pytest_configure(config):
  19. if (find_spec("src") and find_spec("src.taipy")) and (not find_spec("taipy") or not find_spec("taipy.gui")):
  20. import src.taipy.gui
  21. import src.taipy.gui._renderers.builder
  22. import src.taipy.gui._warnings
  23. import src.taipy.gui.builder
  24. import src.taipy.gui.data.decimator.lttb
  25. import src.taipy.gui.data.decimator.minmax
  26. import src.taipy.gui.data.decimator.rdp
  27. import src.taipy.gui.data.decimator.scatter_decimator
  28. import src.taipy.gui.data.utils
  29. import src.taipy.gui.extension
  30. import src.taipy.gui.utils._map_dict
  31. import src.taipy.gui.utils._variable_directory
  32. import src.taipy.gui.utils.expr_var_name
  33. sys.modules["taipy.gui._warnings"] = sys.modules["src.taipy.gui._warnings"]
  34. sys.modules["taipy.gui._renderers.builder"] = sys.modules["src.taipy.gui._renderers.builder"]
  35. sys.modules["taipy.gui.utils._variable_directory"] = sys.modules["src.taipy.gui.utils._variable_directory"]
  36. sys.modules["taipy.gui.utils.expr_var_name"] = sys.modules["src.taipy.gui.utils.expr_var_name"]
  37. sys.modules["taipy.gui.utils._map_dict"] = sys.modules["src.taipy.gui.utils._map_dict"]
  38. sys.modules["taipy.gui.extension"] = sys.modules["src.taipy.gui.extension"]
  39. sys.modules["taipy.gui.data.utils"] = sys.modules["src.taipy.gui.data.utils"]
  40. sys.modules["taipy.gui.data.decimator.lttb"] = sys.modules["src.taipy.gui.data.decimator.lttb"]
  41. sys.modules["taipy.gui.data.decimator.rdp"] = sys.modules["src.taipy.gui.data.decimator.rdp"]
  42. sys.modules["taipy.gui.data.decimator.minmax"] = sys.modules["src.taipy.gui.data.decimator.minmax"]
  43. sys.modules["taipy.gui.data.decimator.scatter_decimator"] = sys.modules[
  44. "src.taipy.gui.data.decimator.scatter_decimator"
  45. ]
  46. sys.modules["taipy.gui"] = sys.modules["src.taipy.gui"]
  47. sys.modules["taipy.gui.builder"] = sys.modules["src.taipy.gui.builder"]
  48. csv = pd.read_csv(
  49. f"{Path(Path(__file__).parent.resolve())}{os.path.sep}current-covid-patients-hospital.csv", parse_dates=["Day"]
  50. )
  51. small_dataframe_data = {"name": ["A", "B", "C"], "value": [1, 2, 3]}
  52. @pytest.fixture(scope="function")
  53. def csvdata():
  54. yield csv
  55. @pytest.fixture(scope="function")
  56. def small_dataframe():
  57. yield small_dataframe_data
  58. @pytest.fixture(scope="function")
  59. def gui(helpers):
  60. from taipy.gui import Gui
  61. gui = Gui()
  62. yield gui
  63. # Delete Gui instance and state of some classes after each test
  64. gui.stop()
  65. helpers.test_cleanup()
  66. @pytest.fixture
  67. def helpers():
  68. from .helpers import Helpers
  69. return Helpers
  70. @pytest.fixture
  71. def test_client():
  72. flask_app = Flask("Test App")
  73. # Create a test client using the Flask application configured for testing
  74. with flask_app.test_client() as testing_client:
  75. # Establish an application context
  76. with flask_app.app_context():
  77. g.client_id = "test client id"
  78. yield testing_client # this is where the testing happens!