GRLWEAP
VIKTOR's GRLWEAP integration requires a specific GRLWEAP worker which can be installed using these instructions.
Analyzing a GRLWEAP model in VIKTOR can be done using the
GRLWeapAnalysis
class (worker required).
No binding is provided by VIKTOR for this module, which means that the input file has to be generated manually:
import viktor as vkt
# Generate the input GWT file.
input_file = ...
# Run the analysis and obtain the output file.
analysis = vkt.grlweap.GRLWeapAnalysis(input_file)
analysis.execute(timeout=10)
output_file = analysis.get_output_file()
Testing
New in v13.5.0
mock_GRLWeapAnalysis
decorator for easier testing of GRLWeapAnalysis
GRLWeapAnalysis.execute
needs to be mocked within
the context of (automated) testing.
The viktor.testing
module provides the mock_GRLWeapAnalysis
decorator that facilitate mocking of workers:
import unittest
from viktor import File
from viktor.testing import mock_GRLWeapAnalysis
from app.my_entity_type.controller import MyEntityTypeController
class TestMyEntityTypeController(unittest.TestCase):
@mock_GRLWeapAnalysis(get_output_file=File.from_path('test_file.GWO'))
def test_grlweap_analysis(self):
MyEntityTypeController().grlweap_analysis()
For the decorator's input parameters the following holds:
- If a Sequence type is provided, the next entry is returned for each corresponding method call. When a call is performed on a depleted iterable, an Exception is raised.
- If a single object is provided, the object is returned each time the corresponding method is called (endlessly).
- If None is provided (default), a default File/BytesIO object (with empty content) is returned each time the corresponding method is called (endlessly).