From 60024c77147d916193a255c8ce46b8b51b1dc7a4 Mon Sep 17 00:00:00 2001 From: fengyang <864751898@qq.com> Date: Thu, 29 Aug 2024 11:44:55 +0800 Subject: [PATCH] test: add test file --- .gitignore | 3 +- pyproject.toml | 1 + .../__pycache__/polyfit.cpython-311.pyc | Bin 6272 -> 0 bytes src/fy_polyfit/polyfit.py | 12 +++++- tests/__init__.py | 0 tests/test_polyfit.py | 36 ++++++++++++++++++ 6 files changed, 50 insertions(+), 2 deletions(-) delete mode 100644 src/fy_polyfit/__pycache__/polyfit.cpython-311.pyc create mode 100644 tests/__init__.py create mode 100644 tests/test_polyfit.py diff --git a/.gitignore b/.gitignore index 7773828..c5318dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -dist/ \ No newline at end of file +dist/ +**/__pycache__/ \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 3350f84..9d95591 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,7 @@ classifiers = [ # path = "src/fy_polyfit/polyfit.py" source = "vcs" + [project.scripts] polyfit = "fy_polyfit.polyfit:main" diff --git a/src/fy_polyfit/__pycache__/polyfit.cpython-311.pyc b/src/fy_polyfit/__pycache__/polyfit.cpython-311.pyc deleted file mode 100644 index 62ae282cdc9d6145f8ff7405041750af138cf0bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6272 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 diff --git a/src/fy_polyfit/polyfit.py b/src/fy_polyfit/polyfit.py index 2e4c92e..db8aa72 100644 --- a/src/fy_polyfit/polyfit.py +++ b/src/fy_polyfit/polyfit.py @@ -26,6 +26,12 @@ def cal_rmse(y_true, y_pred): return np.sqrt(np.mean((y_pred - y_true) **2)) +def PolyfitLinear(x, y): + return np.polyfit(x, y, 1) + +def PolyfitQuadratic(x, y): + return np.polyfit(x, y, 2) + def main(): parser = argparse.ArgumentParser(description='从指定文件中读取数据,默认为data.txt, 无头部,空格分隔,两列') parser.add_argument('filename', nargs='?', default='data.txt', @@ -108,8 +114,12 @@ def main(): ax[1].text(0.5, 0.8, formula2,color='blue',fontsize=16, transform=ax[1].transAxes, verticalalignment='top', horizontalalignment='center') plt.tight_layout() + + # plt.draw() + # 保存图片到images文件夹下 + plt.savefig('../../images/fitting.png') plt.show() - + except FileNotFoundError as e: print(e) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_polyfit.py b/tests/test_polyfit.py new file mode 100644 index 0000000..bc3744b --- /dev/null +++ b/tests/test_polyfit.py @@ -0,0 +1,36 @@ +import sys, os +import numpy as np +import pytest +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../src"))) +from fy_polyfit.polyfit import PolyfitLinear, PolyfitQuadratic + +def test_polyfit(): + x = np.array([1, 2, 3, 4, 5]) + y = 2 * x + 1 + np.random.uniform(-0.5, 0.5, size=x.shape) + + # 调用 PolyfitLinear + coefficients = PolyfitLinear(x, y) + + # 期望的系数 + expected_coefficients = np.polyfit(x, y, 1) + + # 断言系数接近期望值 + np.testing.assert_almost_equal(coefficients, expected_coefficients, decimal=2) + +def test_polyfit_quadratic(): + # 示例数据 + x = np.array([1, 2, 3, 4, 5]) + y = 3 * x**2 + 2 * x + 1 + np.random.uniform(-1, 1, size=x.shape) + + # 调用 PolyfitQuadratic + coefficients = PolyfitQuadratic(x, y) + + # 期望的系数 + expected_coefficients = np.polyfit(x, y, 2) + + # 断言系数接近期望值 + np.testing.assert_almost_equal(coefficients, expected_coefficients, decimal=2) + + +if __name__ == "__main__": + pytest.main() \ No newline at end of file