ZOSPy 的单元测试#
ZOSPy使用PyTest进行单元测试。Hatch 用于自动测试不同的 Python 版本,并在隔离环境中运行测试。使用 hatch 运行测试还可以确保软件包能够正确安装。
如何运行#
命令行选项#
--extension:由于 ZOS-API仅限于每个会话只有一个连接,因此无法同时在扩展模式和独立模式下测试ZOSPy。指定命令行标志--extension指示PyTest在扩展模式下连接到Zemax OpticStudio。确保已激活交互式扩展模式,并且未选中Auto Close on Disconnect。--output-directory <OUTPUT_DIRECTORY>:如果指定,所有创建的 OpticStudio 系统都将保存到此目录。--opticstudio-directory <OPTICSTUDIO_DIRECTORY>:如果指定,则OpticStudio安装目录的路径将设置为此值。如果在同一系统上安装了多个OpticStudio版本,并且您想要使用特定版本,则此功能特别有用。--update-ui:如果指定,则在扩展模式下测试时启用UI更新。这对于调试目的很有用。
生成测试参考数据#
zospy.analyses的单元测试依赖于参考数据来检查分析结果的有效性。如果首次使用特定版本的ZOSPy运行单元测试,则这些数据尚不存在。可以通过运行来生成
hatch run generate-reference-data
生成的参考数据文件将被添加到tests/data/reference 。
参考数据文件是使用scripts/generate_test_reference_data/tests.yaml中的规范生成的。如果添加了新的分析测试,则需要使用针对这些测试的参考规范来扩展此文件。下面显示了记录的示例规范。
- # OpticStudio model as defined in scripts/generate_test_reference_data/systems.py
model: simple_system
# ZOSPy analysis, specified as a module relative to zospy.analyses
analysis: raysandspots.ray_fan
# Unit test file, relative to tests/analyses
file: test_raysandspots.py
# Unit test for which this reference data is intended
test: test_ray_fan_returns_correct_result
# Parameters that are parametrized using @pytest.mark.parametrize
parametrized: [plot_scale, number_of_rays, tangential, sagittal]
# List with the parameter sets in parameter_name: parameter_value format
parameters:
- plot_scale: 0
number_of_rays: 20
tangential: Aberration_Y
sagittal: Aberration_X
- plot_scale: 1
number_of_rays: 40
tangential: Aberration_Y
sagittal: Aberration_X