FEM: test app, move all comments in separate file

This commit is contained in:
Bernd Hahnebach
2020-05-23 08:06:32 +02:00
parent f6147e1ffb
commit 4ddc5a3221
6 changed files with 448 additions and 309 deletions

View File

@@ -31,6 +31,7 @@ SET(FemBaseModules_SRCS
Init.py
InitGui.py
ObjectsFem.py
test_information.md
TestFemApp.py
)

View File

@@ -48,285 +48,3 @@ False if FemTest08.__name__ else True
False if FemTest09.__name__ else True
False if FemTest10.__name__ else True
False if FemTest11.__name__ else True
# For more information on how to run a specific test class or a test method see
# file src/Mod/Test/__init__
# forum https://forum.freecadweb.org/viewtopic.php?f=10&t=22190#p175546
# It may be useful to temporary comment FreeCAD.closeDocument(self.doc_name)
# in tearDown method to not close the document
"""
# examples from within FreeCAD:
# create all objects test
import Test, femtest.app.test_object
Test.runTestsFromClass(femtest.app.test_object.TestObjectCreate)
# all FEM tests
import Test, TestFemApp
Test.runTestsFromModule(TestFemApp)
# module
import Test, femtest.app.test_common
Test.runTestsFromModule(femtest.app.test_common)
# class
import Test, femtest.app.test_common
Test.runTestsFromClass(femtest.app.test_common.TestFemCommon)
# method
import unittest
thetest = "femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules"
alltest = unittest.TestLoader().loadTestsFromName(thetest)
unittest.TextTestRunner().run(alltest)
# examples from shell in build dir:
# all FreeCAD tests
./bin/FreeCAD --run-test 0
./bin/FreeCADCmd --run-test 0
# all FEM tests
./bin/FreeCAD --run-test "TestFemApp"
./bin/FreeCADCmd --run-test "TestFemApp"
# import Fem and FemGui
./bin/FreeCAD --run-test "femtest.app.test_femimport"
./bin/FreeCADCmd --run-test "femtest.app.test_femimport"
# other module
./bin/FreeCAD --run-test "femtest.app.test_femimport"
./bin/FreeCAD --run-test "femtest.app.test_ccxtools"
./bin/FreeCAD --run-test "femtest.app.test_common"
./bin/FreeCAD --run-test "femtest.app.test_material"
./bin/FreeCAD --run-test "femtest.app.test_mesh"
./bin/FreeCAD --run-test "femtest.app.test_object"
./bin/FreeCAD --run-test "femtest.app.test_open"
./bin/FreeCAD --run-test "femtest.app.test_result"
./bin/FreeCAD --run-test "femtest.app.test_solverframework"
./bin/FreeCADCmd --run-test "femtest.app.test_femimport"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools"
./bin/FreeCADCmd --run-test "femtest.app.test_common"
./bin/FreeCADCmd --run-test "femtest.app.test_material"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh"
./bin/FreeCADCmd --run-test "femtest.app.test_object"
./bin/FreeCADCmd --run-test "femtest.app.test_open"
./bin/FreeCADCmd --run-test "femtest.app.test_result"
./bin/FreeCADCmd --run-test "femtest.app.test_solverframework"
# class
./bin/FreeCAD --run-test "femtest.app.test_common.TestFemCommon"
# method
./bin/FreeCAD --run-test "femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules"
# unit test command to run a specific FEM unit test to copy for fast tests :-)
# to get all commands to start FreeCAD from build dir on Linux
# and run FEM unit test this could be used:
from femtest.utilstest import get_fem_test_defs as gf
gf()
./bin/FreeCADCmd --run-test "femtest.app.test_femimport.TestObjectExistance.test_objects_existance"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_freq_analysis"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_analysis"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_force_faceload_hexa20"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_shell_shell"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_solid_solid"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_tie"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_material_multiple"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_material_nonlinar"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_thermomech_bimetall"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_thermomech_flow1D_analysis"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_thermomech_spine_analysis"
./bin/FreeCADCmd --run-test "femtest.app.test_common.TestFemCommon.test_adding_refshaps"
./bin/FreeCADCmd --run-test "femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules"
./bin/FreeCADCmd --run-test "femtest.app.test_material.TestMaterialUnits.test_known_quantity_units"
./bin/FreeCADCmd --run-test "femtest.app.test_material.TestMaterialUnits.test_material_card_quantities"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshCommon.test_mesh_seg2_python"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshCommon.test_mesh_seg3_python"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshCommon.test_unv_save_load"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshCommon.test_writeAbaqus_precision"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_create"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_inp"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_unv"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_vkt"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_yml"
./bin/FreeCADCmd --run-test "femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_z88"
./bin/FreeCADCmd --run-test "femtest.app.test_object.TestObjectCreate.test_femobjects_make"
./bin/FreeCADCmd --run-test "femtest.app.test_object.TestObjectType.test_femobjects_type"
./bin/FreeCADCmd --run-test "femtest.app.test_object.TestObjectType.test_femobjects_isoftype"
./bin/FreeCADCmd --run-test "femtest.app.test_object.TestObjectType.test_femobjects_derivedfromfem"
./bin/FreeCADCmd --run-test "femtest.app.test_object.TestObjectType.test_femobjects_derivedfromstd"
./bin/FreeCADCmd --run-test "femtest.app.test_open.TestObjectOpen.test_femobjects_open_head"
./bin/FreeCADCmd --run-test "femtest.app.test_open.TestObjectOpen.test_femobjects_open_de9b3fb438"
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_read_frd_massflow_networkpressure"
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_stress_von_mises"
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_stress_principal_std"
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_stress_principal_reinforced"
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_rho"
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_disp_abs"
./bin/FreeCADCmd --run-test "femtest.app.test_solverframework.TestSolverFrameWork.test_solver_calculix"
./bin/FreeCADCmd --run-test "femtest.app.test_solverframework.TestSolverFrameWork.test_solver_elmer"
# to get all command to start FreeCAD from build dir on Linux
# and run FEM unit test this could be used:
from femtest.utilstest import get_fem_test_defs as gf
gf("in")
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_freq_analysis"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_analysis"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_force_faceload_hexa20"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_shell_shell"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_solid_solid"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_tie"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_material_multiple"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_material_nonlinar"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_thermomech_bimetall"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_thermomech_flow1D_analysis"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_thermomech_spine_analysis"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_common.TestFemCommon.test_adding_refshaps"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_material.TestMaterialUnits.test_known_quantity_units"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_material.TestMaterialUnits.test_material_card_quantities"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshCommon.test_mesh_seg2_python"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshCommon.test_mesh_seg3_python"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshCommon.test_unv_save_load"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshCommon.test_writeAbaqus_precision"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_create"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_inp"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_unv"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_vkt"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_yml"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_z88"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_object.TestObjectCreate.test_femobjects_make"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_object.TestObjectType.test_femobjects_type"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_object.TestObjectType.test_femobjects_isoftype"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_object.TestObjectType.test_femobjects_derivedfromfem"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_object.TestObjectType.test_femobjects_derivedfromstd"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_open.TestObjectOpen.test_femobjects_open_head))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_open.TestObjectOpen.test_femobjects_open_de9b3fb438))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_result.TestResult.test_read_frd_massflow_networkpressure"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_result.TestResult.test_stress_von_mises"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_result.TestResult.test_stress_principal_std"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_result.TestResult.test_stress_principal_reinforced"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_result.TestResult.test_rho"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_result.TestResult.test_disp_abs"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_solverframework.TestSolverFrameWork.test_solver_calculix"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_solverframework.TestSolverFrameWork.test_solver_elmer"))
# open files from FEM test suite source code
# be careful on updating these files, they contain the original results!
# TODO update files, because some of them have non-existing FEM object classes
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/cube.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/cube_frequency.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/cube_static.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/Flow1D_thermomech.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/multimat.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/spine_thermomech.FCStd')
# open files generated from test suite
import femtest.utilstest as ut
ut.all_test_files()
doc = ut.cube_frequency()
doc = ut.cube_static()
doc = ut.Flow1D_thermomech()
doc = ut.multimat()
doc = ut.spine_thermomech()
# load std FEM example files
app_home = FreeCAD.ConfigGet("AppHomePath")
doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever2D.FCStd")
doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever3D.FCStd")
doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever3D_newSolver.FCStd")
doc = FreeCAD.open(app_home + "data/examples/Fem.FCStd")
doc = FreeCAD.open(app_home + "data/examples/Fem2.FCStd")
# load all documents files
app_home = FreeCAD.ConfigGet("AppHomePath")
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/open/all_objects_de9b3fb438.FCStd')
"""

View File

@@ -21,18 +21,9 @@
# * *
# ***************************************************************************
# see TestFemApp for tons of comments
# Gui Unit tests for the FEM module
# to get the right order import as is used
from femtest.gui.test_open import TestObjectOpen as FemGuiTest01
# dummy usage to get flake8 and lgtm quiet
False if FemGuiTest01.__name__ else True
"""
./bin/FreeCAD --run-test "femtest.gui.test_open.TestObjectOpen"
"""

View File

@@ -88,18 +88,25 @@ def get_defmake_count(
def get_fem_test_defs(
inout="out"
):
test_path = join(FreeCAD.getHomePath(), "Mod", "Fem", "femtest")
collected_test_modules = []
collected_test_methods = []
test_path = join(FreeCAD.getHomePath(), "Mod", "Fem", "femtest", "app")
collected_test_module_paths = []
for tfile in sorted(os.listdir(test_path)):
if tfile.startswith("test") and tfile.endswith(".py"):
collected_test_modules.append(join(test_path, tfile))
for f in collected_test_modules:
tfile = open(f, "r")
collected_test_module_paths.append(join(test_path, tfile))
collected_test_modules = []
collected_test_classes = []
collected_test_methods = []
for f in collected_test_module_paths:
module_name = os.path.splitext(os.path.basename(f))[0]
module_path = "femtest.app.{}".format(module_name)
if module_path not in collected_test_modules:
collected_test_modules.append(module_path)
class_name = ""
tfile = open(f, "r")
for ln in tfile:
ln = ln.lstrip()
ln = ln.rstrip()
@@ -107,25 +114,42 @@ def get_fem_test_defs(
ln = ln.lstrip("class ")
ln = ln.split("(")[0]
class_name = ln
class_path = "femtest.app.{}.{}".format(module_name, class_name)
if class_path not in collected_test_classes:
collected_test_classes.append(class_path)
if ln.startswith("def test"):
ln = ln.lstrip("def ")
ln = ln.split("(")[0]
collected_test_methods.append(
"femtest.{}.{}.{}".format(module_name, class_name, ln)
)
method_path = "femtest.app.{}.{}.{}".format(module_name, class_name, ln)
collected_test_methods.append(method_path)
tfile.close()
# output prints
print("")
print("")
print("# modules")
for m in collected_test_modules:
print("make -j 4 && ./bin/FreeCADCmd -t {}".format(m))
print("")
print("")
print("# classes")
for m in collected_test_classes:
print("make -j 4 && ./bin/FreeCADCmd -t {}".format(m))
print("")
print("")
print("# methods")
for m in collected_test_methods:
run_outside_fc = './bin/FreeCADCmd --run-test "{}"'.format(m)
run_inside_fc = (
"unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName('{}'))"
print("make -j 4 && ./bin/FreeCADCmd -t {}".format(m))
print("")
print("")
print("# methods in FreeCAD")
for m in collected_test_methods:
print(
"unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(\n"
" '{}'\n"
"))\n"
.format(m)
)
if inout == "in":
print("\nimport unittest")
print(run_inside_fc)
else:
print(run_outside_fc)
def compare_inp_files(

View File

@@ -0,0 +1,300 @@
# modules
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_common
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_femimport
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_material
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_open
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solverframework
# classes
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_common.TestFemCommon
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_femimport.TestFemImport
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_femimport.TestObjectExistance
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_material.TestMaterialUnits
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshCommon
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectCreate
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectType
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_open.TestObjectOpen
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solverframework.TestSolverFrameWork
# methods
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_freq_analysis
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_static_analysis
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_force_faceload_hexa20
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_shell_shell
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_solid_solid
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_tie
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_static_material_multiple
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_static_material_nonlinar
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_thermomech_bimetall
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_thermomech_flow1D_analysis
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_ccxtools.TestCcxTools.test_thermomech_spine_analysis
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_common.TestFemCommon.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_common.TestFemCommon.test_adding_refshaps
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_femimport.TestFemImport.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_femimport.TestFemImport.test_import_fem
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_femimport.TestObjectExistance.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_femimport.TestObjectExistance.test_objects_existance
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_material.TestMaterialUnits.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_material.TestMaterialUnits.test_known_quantity_units
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_material.TestMaterialUnits.test_material_card_quantities
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshCommon.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshCommon.test_mesh_seg2_python
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshCommon.test_mesh_seg3_python
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshCommon.test_unv_save_load
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshCommon.test_writeAbaqus_precision
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_create
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_inp
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_unv
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_vkt
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_yml
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_z88
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectCreate.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectCreate.test_femobjects_make
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectType.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectType.test_femobjects_type
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectType.test_femobjects_isoftype
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectType.test_femobjects_derivedfromfem
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_object.TestObjectType.test_femobjects_derivedfromstd
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_open.TestObjectOpen.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_open.TestObjectOpen.test_femobjects_open_head
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_open.TestObjectOpen.test_femobjects_open_de9b3fb438
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_read_frd_massflow_networkpressure
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_stress_von_mises
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_stress_principal_std
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_stress_principal_reinforced
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_rho
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_disp_abs
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solverframework.TestSolverFrameWork.test_00print
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solverframework.TestSolverFrameWork.test_solver_calculix
make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solverframework.TestSolverFrameWork.test_solver_elmer
# methods in FreeCAD
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_freq_analysis'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_static_analysis'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_force_faceload_hexa20'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_shell_shell'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_solid_solid'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_tie'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_static_material_multiple'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_static_material_nonlinar'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_thermomech_bimetall'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_thermomech_flow1D_analysis'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_ccxtools.TestCcxTools.test_thermomech_spine_analysis'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_common.TestFemCommon.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_common.TestFemCommon.test_adding_refshaps'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_femimport.TestFemImport.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_femimport.TestFemImport.test_import_fem'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_femimport.TestObjectExistance.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_femimport.TestObjectExistance.test_objects_existance'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_material.TestMaterialUnits.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_material.TestMaterialUnits.test_known_quantity_units'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_material.TestMaterialUnits.test_material_card_quantities'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshCommon.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshCommon.test_mesh_seg2_python'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshCommon.test_mesh_seg3_python'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshCommon.test_unv_save_load'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshCommon.test_writeAbaqus_precision'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshEleTetra10.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_create'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_inp'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_unv'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_vkt'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_yml'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_mesh.TestMeshEleTetra10.test_tetra10_z88'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_object.TestObjectCreate.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_object.TestObjectCreate.test_femobjects_make'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_object.TestObjectType.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_object.TestObjectType.test_femobjects_type'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_object.TestObjectType.test_femobjects_isoftype'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_object.TestObjectType.test_femobjects_derivedfromfem'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_object.TestObjectType.test_femobjects_derivedfromstd'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_open.TestObjectOpen.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_open.TestObjectOpen.test_femobjects_open_head'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_open.TestObjectOpen.test_femobjects_open_de9b3fb438'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_result.TestResult.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_result.TestResult.test_read_frd_massflow_networkpressure'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_result.TestResult.test_stress_von_mises'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_result.TestResult.test_stress_principal_std'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_result.TestResult.test_stress_principal_reinforced'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_result.TestResult.test_rho'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_result.TestResult.test_disp_abs'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_solverframework.TestSolverFrameWork.test_00print'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_solverframework.TestSolverFrameWork.test_solver_calculix'
))
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName(
'femtest.app.test_solverframework.TestSolverFrameWork.test_solver_elmer'
))

View File

@@ -0,0 +1,105 @@
# FEM unit test information
Find in this fils some informatin how to run unit test for FEM
## more information
- how to run a specific test class or a test method see file
- src/Mod/Test/__init__
- forum https://forum.freecadweb.org/viewtopic.php?f=10&t=22190#p175546
## let some test document stay open
- run test method from inside FreeCAD
- in tearDown method to not close the document
- temporary comment FreeCAD.closeDocument(self.doc_name) and add pass
## unit test command to copy
- to run a specific FEM unit test to copy for fast tests :-)
- they can be found in file test_commands_to_copy.md
- greate them by
```python
from femtest.app.support_utils import get_fem_test_defs
get_fem_test_defs()
```
## examples from within FreeCAD:
### create all objects test
import Test, femtest.app.test_object
Test.runTestsFromClass(femtest.app.test_object.TestObjectCreate)
### all FEM tests
import Test, TestFemApp
Test.runTestsFromModule(TestFemApp)
### module
import Test, femtest.app.test_common
Test.runTestsFromModule(femtest.app.test_common)
### class
import Test, femtest.app.test_common
Test.runTestsFromClass(femtest.app.test_common.TestFemCommon)
### method
import unittest
thetest = "femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules"
alltest = unittest.TestLoader().loadTestsFromName(thetest)
unittest.TextTestRunner().run(alltest)
## examples from shell in build dir:
### all FreeCAD tests
./bin/FreeCADCmd --run-test 0
./bin/FreeCAD --run-test 0
### all FEM tests
./bin/FreeCADCmd --run-test "TestFemApp"
./bin/FreeCAD --run-test "TestFemApp"
### import Fem and FemGui
./bin/FreeCADCmd --run-test "femtest.app.test_femimport"
./bin/FreeCAD --run-test "femtest.app.test_femimport"
### module
./bin/FreeCAD --run-test "femtest.app.test_femimport"
### class
./bin/FreeCAD --run-test "femtest.app.test_common.TestFemCommon"
### method
./bin/FreeCAD --run-test "femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules"
### Gui
./bin/FreeCAD --run-test "femtest.gui.test_open.TestObjectOpen"
## open files
### from FEM test suite source code
- be careful on updating these files, they contain the original results!
- TODO update files, because some of them have non-existing FEM object classes
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/cube.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/cube_frequency.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/cube_static.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/Flow1D_thermomech.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/multimat.FCStd')
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/spine_thermomech.FCStd')
### generated from test suite
import femtest.utilstest as ut
ut.all_test_files()
doc = ut.cube_frequency()
doc = ut.cube_static()
doc = ut.Flow1D_thermomech()
doc = ut.multimat()
doc = ut.spine_thermomech()
### load std FEM example files
app_home = FreeCAD.ConfigGet("AppHomePath")
doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever2D.FCStd")
doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever3D.FCStd")
doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever3D_newSolver.FCStd")
doc = FreeCAD.open(app_home + "data/examples/Fem.FCStd")
doc = FreeCAD.open(app_home + "data/examples/Fem2.FCStd")
### load all documents files
app_home = FreeCAD.ConfigGet("AppHomePath")
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/open/all_objects_de9b3fb438.FCStd')