You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

fastnlp_test_tutorial.ipynb 3.8 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "## fastNLP测试说明\n",
  8. "### 测试环境\n",
  9. "fastNLP使用pytest对代码进行单元测试,测试代码在test文件夹下,测试所需数据在test/data_for_tests文件夹下\n",
  10. "测试的步骤主要分为准备数据,执行测试,比对结果,清除环境四步\n",
  11. "测试代码以test_xxx.py命名,以DataSet的测试代码为例,测试代码文件名为test_dataset.py"
  12. ]
  13. },
  14. {
  15. "cell_type": "code",
  16. "execution_count": null,
  17. "metadata": {},
  18. "outputs": [],
  19. "source": [
  20. "import os\n",
  21. "import unittest # 单元测试需要用到unittest\n",
  22. "\n",
  23. "from fastNLP.core.dataset import DataSet\n",
  24. "from fastNLP.core.fieldarray import FieldArray\n",
  25. "from fastNLP.core.instance import Instance\n",
  26. "# 在这个单元测试文件中,需要测试DataSet、FieldArray、以及Instance"
  27. ]
  28. },
  29. {
  30. "cell_type": "code",
  31. "execution_count": null,
  32. "metadata": {},
  33. "outputs": [],
  34. "source": [
  35. "class TestDataSet(unittest.TestCase): # 类名字以Test打头,继承unittest.TestCase\n",
  36. "\n",
  37. " def test_init_v1(self): # 测试样例1, 函数名称以test_打头\n",
  38. " # 该测试样例测试的是DataSet的初始化\n",
  39. " ins = Instance(x=[1, 2, 3, 4], y=[5, 6]) # 准备数据\n",
  40. " ds = DataSet([ins] * 40) # 执行测试(调用DataSet的初始化函数)\n",
  41. " self.assertTrue(\"x\" in ds.field_arrays and \"y\" in ds.field_arrays) # 比对结果:'x'跟'y'都是ds的field\n",
  42. " self.assertEqual(ds.field_arrays[\"x\"].content, [[1, 2, 3, 4], ] * 40) # 比对结果: field 'x'的内容正确\n",
  43. " self.assertEqual(ds.field_arrays[\"y\"].content, [[5, 6], ] * 40) # 比对结果: field 'y'的内容正确\n",
  44. " \n",
  45. " def test_init_v2(self): # 测试样例2,该样例测试DataSet的另一种初始化方式\n",
  46. " ds = DataSet({\"x\": [[1, 2, 3, 4]] * 40, \"y\": [[5, 6]] * 40})\n",
  47. " self.assertTrue(\"x\" in ds.field_arrays and \"y\" in ds.field_arrays)\n",
  48. " self.assertEqual(ds.field_arrays[\"x\"].content, [[1, 2, 3, 4], ] * 40)\n",
  49. " self.assertEqual(ds.field_arrays[\"y\"].content, [[5, 6], ] * 40)\n",
  50. " \n",
  51. " def test_init_assert(self): # 测试样例3,该样例测试不规范初始化DataSet时是否会报正确错误\n",
  52. " with self.assertRaises(AssertionError):\n",
  53. " _ = DataSet({\"x\": [[1, 2, 3, 4]] * 40, \"y\": [[5, 6]] * 100})\n",
  54. " with self.assertRaises(AssertionError):\n",
  55. " _ = DataSet([[1, 2, 3, 4]] * 10)\n",
  56. " with self.assertRaises(ValueError):\n",
  57. " _ = DataSet(0.00001)\n",
  58. " \n",
  59. " def test_contains(self): # 测试样例4,该样例测试DataSet的contains函数,是功能测试\n",
  60. " ds = DataSet({\"x\": [[1, 2, 3, 4]] * 40, \"y\": [[5, 6]] * 40})\n",
  61. " self.assertTrue(\"x\" in ds)\n",
  62. " self.assertTrue(\"y\" in ds)\n",
  63. " self.assertFalse(\"z\" in ds)\n",
  64. " \n",
  65. " # 更多测试样例见test/core/test_dataset.py"
  66. ]
  67. },
  68. {
  69. "cell_type": "code",
  70. "execution_count": null,
  71. "metadata": {},
  72. "outputs": [],
  73. "source": []
  74. }
  75. ],
  76. "metadata": {
  77. "kernelspec": {
  78. "display_name": "Python 3",
  79. "language": "python",
  80. "name": "python3"
  81. },
  82. "language_info": {
  83. "codemirror_mode": {
  84. "name": "ipython",
  85. "version": 3
  86. },
  87. "file_extension": ".py",
  88. "mimetype": "text/x-python",
  89. "name": "python",
  90. "nbconvert_exporter": "python",
  91. "pygments_lexer": "ipython3",
  92. "version": "3.6.7"
  93. }
  94. },
  95. "nbformat": 4,
  96. "nbformat_minor": 2
  97. }