|
|
@@ -0,0 +1,97 @@ |
|
|
|
{ |
|
|
|
"cells": [ |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## fastNLP测试说明\n", |
|
|
|
"### 测试环境\n", |
|
|
|
"fastNLP使用pytest对代码进行单元测试,测试代码在test文件夹下,测试所需数据在test/data_for_tests文件夹下\n", |
|
|
|
"测试的步骤主要分为准备数据,执行测试,比对结果,清除环境四步\n", |
|
|
|
"测试代码以test_xxx.py命名,以DataSet的测试代码为例,测试代码文件名为test_dataset.py" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"import os\n", |
|
|
|
"import unittest # 单元测试需要用到unittest\n", |
|
|
|
"\n", |
|
|
|
"from fastNLP.core.dataset import DataSet\n", |
|
|
|
"from fastNLP.core.fieldarray import FieldArray\n", |
|
|
|
"from fastNLP.core.instance import Instance\n", |
|
|
|
"# 在这个单元测试文件中,需要测试DataSet、FieldArray、以及Instance" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"class TestDataSet(unittest.TestCase): # 类名字以Test打头,继承unittest.TestCase\n", |
|
|
|
"\n", |
|
|
|
" def test_init_v1(self): # 测试样例1, 函数名称以test_打头\n", |
|
|
|
" # 该测试样例测试的是DataSet的初始化\n", |
|
|
|
" ins = Instance(x=[1, 2, 3, 4], y=[5, 6]) # 准备数据\n", |
|
|
|
" ds = DataSet([ins] * 40) # 执行测试(调用DataSet的初始化函数)\n", |
|
|
|
" self.assertTrue(\"x\" in ds.field_arrays and \"y\" in ds.field_arrays) # 比对结果:'x'跟'y'都是ds的field\n", |
|
|
|
" self.assertEqual(ds.field_arrays[\"x\"].content, [[1, 2, 3, 4], ] * 40) # 比对结果: field 'x'的内容正确\n", |
|
|
|
" self.assertEqual(ds.field_arrays[\"y\"].content, [[5, 6], ] * 40) # 比对结果: field 'y'的内容正确\n", |
|
|
|
" \n", |
|
|
|
" def test_init_v2(self): # 测试样例2,该样例测试DataSet的另一种初始化方式\n", |
|
|
|
" ds = DataSet({\"x\": [[1, 2, 3, 4]] * 40, \"y\": [[5, 6]] * 40})\n", |
|
|
|
" self.assertTrue(\"x\" in ds.field_arrays and \"y\" in ds.field_arrays)\n", |
|
|
|
" self.assertEqual(ds.field_arrays[\"x\"].content, [[1, 2, 3, 4], ] * 40)\n", |
|
|
|
" self.assertEqual(ds.field_arrays[\"y\"].content, [[5, 6], ] * 40)\n", |
|
|
|
" \n", |
|
|
|
" def test_init_assert(self): # 测试样例3,该样例测试不规范初始化DataSet时是否会报正确错误\n", |
|
|
|
" with self.assertRaises(AssertionError):\n", |
|
|
|
" _ = DataSet({\"x\": [[1, 2, 3, 4]] * 40, \"y\": [[5, 6]] * 100})\n", |
|
|
|
" with self.assertRaises(AssertionError):\n", |
|
|
|
" _ = DataSet([[1, 2, 3, 4]] * 10)\n", |
|
|
|
" with self.assertRaises(ValueError):\n", |
|
|
|
" _ = DataSet(0.00001)\n", |
|
|
|
" \n", |
|
|
|
" def test_contains(self): # 测试样例4,该样例测试DataSet的contains函数,是功能测试\n", |
|
|
|
" ds = DataSet({\"x\": [[1, 2, 3, 4]] * 40, \"y\": [[5, 6]] * 40})\n", |
|
|
|
" self.assertTrue(\"x\" in ds)\n", |
|
|
|
" self.assertTrue(\"y\" in ds)\n", |
|
|
|
" self.assertFalse(\"z\" in ds)\n", |
|
|
|
" \n", |
|
|
|
" # 更多测试样例见test/core/test_dataset.py" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [] |
|
|
|
} |
|
|
|
], |
|
|
|
"metadata": { |
|
|
|
"kernelspec": { |
|
|
|
"display_name": "Python 3", |
|
|
|
"language": "python", |
|
|
|
"name": "python3" |
|
|
|
}, |
|
|
|
"language_info": { |
|
|
|
"codemirror_mode": { |
|
|
|
"name": "ipython", |
|
|
|
"version": 3 |
|
|
|
}, |
|
|
|
"file_extension": ".py", |
|
|
|
"mimetype": "text/x-python", |
|
|
|
"name": "python", |
|
|
|
"nbconvert_exporter": "python", |
|
|
|
"pygments_lexer": "ipython3", |
|
|
|
"version": "3.6.4" |
|
|
|
} |
|
|
|
}, |
|
|
|
"nbformat": 4, |
|
|
|
"nbformat_minor": 2 |
|
|
|
} |