diff --git a/src/tests/test_gaussian_beam/data.txt b/src/tests/test_analysis/test_gaussian_beam/data/data.txt
similarity index 100%
rename from src/tests/test_gaussian_beam/data.txt
rename to src/tests/test_analysis/test_gaussian_beam/data/data.txt
diff --git a/src/tests/test_gaussian_beam/test_fit_beam_data.py b/src/tests/test_analysis/test_gaussian_beam/test_fit_beam_data.py
similarity index 64%
rename from src/tests/test_gaussian_beam/test_fit_beam_data.py
rename to src/tests/test_analysis/test_gaussian_beam/test_fit_beam_data.py
index 9e0bd50a6bded1e6b40d8b63eda748f8a1835243..2d93d22e450087db5a782d44c9ba5f30844579bc 100644
--- a/src/tests/test_gaussian_beam/test_fit_beam_data.py
+++ b/src/tests/test_analysis/test_gaussian_beam/test_fit_beam_data.py
@@ -11,7 +11,7 @@ filedir = Path(__file__).parent
 
 class TestFitBeamData(TestCase):
     def setUp(self):
-        self.data = io.read(f"{filedir}/data.txt")
+        self.data = io.read(filedir / "data/data.txt")
         self.data.index *= 1e-2
         self.data *= 0.5e-6
 
@@ -48,34 +48,3 @@ class TestFitBeamData(TestCase):
         self.assertAlmostEqual(
             errors["major"][1], 0.006396576345439704, places=5
         )  # 0.00642
-
-
-class TestGaussianBeam(TestCase):
-    def test_non_default_lambda(self):
-        beam = GaussianBeam(wavelength=1550e-9)
-        self.assertEqual(beam.wavelength, 1550e-9)
-        self.assertEqual(beam.propagate(1).wavelength, 1550e-9)
-
-    def test_R_property(self):
-        beam = GaussianBeam(q=3 + 1j)
-        self.assertAlmostEqual(beam.R, 10 / 3)
-
-    def test_R_property_infty(self):
-        beam = GaussianBeam(q=0 + 1j)
-        self.assertAlmostEqual(beam.R, np.infty)
-
-    def test_waist(self):
-        beam = GaussianBeam.from_waist(1e-3, 0)
-        self.assertEqual(beam.w, 1e-3)
-
-    def test_position(self):
-        beam = GaussianBeam.from_waist(1e-3, 0)
-        self.assertEqual(beam.z0, 0)
-
-    def test_negative_wavelength_raises_error(self):
-        with self.assertRaises(ValueError):
-            beam = GaussianBeam(wavelength=-1e-9)
-
-    def test_divergence(self):
-        beam = GaussianBeam()
-        self.assertAlmostEqual(beam.divergence, 582e-6)
diff --git a/src/tests/test_analysis/test_gaussian_beam/test_gaussian_beam.py b/src/tests/test_analysis/test_gaussian_beam/test_gaussian_beam.py
new file mode 100644
index 0000000000000000000000000000000000000000..355260f6829a022a403661c9a7332834e0c98820
--- /dev/null
+++ b/src/tests/test_analysis/test_gaussian_beam/test_gaussian_beam.py
@@ -0,0 +1,36 @@
+from unittest import TestCase
+
+import numpy as np
+
+from openqlab.analysis.gaussian_beam import GaussianBeam
+
+
+class TestGaussianBeam(TestCase):
+    def test_non_default_lambda(self):
+        beam = GaussianBeam(wavelength=1550e-9)
+        self.assertEqual(beam.wavelength, 1550e-9)
+        self.assertEqual(beam.propagate(1).wavelength, 1550e-9)
+
+    def test_R_property(self):
+        beam = GaussianBeam(q=3 + 1j)
+        self.assertAlmostEqual(beam.R, 10 / 3)
+
+    def test_R_property_infty(self):
+        beam = GaussianBeam(q=0 + 1j)
+        self.assertAlmostEqual(beam.R, np.infty)
+
+    def test_waist(self):
+        beam = GaussianBeam.from_waist(1e-3, 0)
+        self.assertEqual(beam.w, 1e-3)
+
+    def test_position(self):
+        beam = GaussianBeam.from_waist(1e-3, 0)
+        self.assertEqual(beam.z0, 0)
+
+    def test_negative_wavelength_raises_error(self):
+        with self.assertRaises(ValueError):
+            beam = GaussianBeam(wavelength=-1e-9)
+
+    def test_divergence(self):
+        beam = GaussianBeam()
+        self.assertAlmostEqual(beam.divergence, 582e-6)