Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对长时间运行函数的Python单元测试_Python_Unit Testing - Fatal编程技术网

针对长时间运行函数的Python单元测试

针对长时间运行函数的Python单元测试,python,unit-testing,Python,Unit Testing,我有一个长期运行的python方法,这个函数将进入文件夹,读取所有文档并提取文本。输出的数量不会是一个常数,因为它可以改变。这个过程可能需要几个小时到几天。如何为这样一个函数编写单元测试,如何根据输出数量的变化来检查其通过或失败,这需要很多小时,这种问题可以通过使用测试资源来解决。当您需要在文件数据上测试函数时,这是一个典型的问题 在tests目录中(您有一个,不是吗?),您可以创建resources包 你只需要把你的测试数据放在这里。当然,选择一个最小的树结构:测试所需的唯一必要的文件和目录

我有一个长期运行的python方法,这个函数将进入文件夹,读取所有文档并提取文本。输出的数量不会是一个常数,因为它可以改变。这个过程可能需要几个小时到几天。如何为这样一个函数编写单元测试,如何根据输出数量的变化来检查其通过或失败,这需要很多小时,这种问题可以通过使用测试资源来解决。当您需要在文件数据上测试函数时,这是一个典型的问题

tests
目录中(您有一个,不是吗?),您可以创建
resources

你只需要把你的测试数据放在这里。当然,选择一个最小的树结构:测试所需的唯一必要的文件和目录

要访问
resources
目录,我建议使用
resources\u DIR
变量定义如下:

\uuuu init\uuuu.py
文件中,您可以编写:

导入操作系统
RESOURCES\u DIR=os.path.dirname(\u文件\u)
您可以在单元测试中轻松导入此变量,并使用它访问测试文件

下面是一个更详细的示例:

tests
+-- resources
|   +-- __init__.py
|   \-- test_func1
|       +-- scenario1
|       |   +-- <data for scenario1>
|       \-- scenario2
|           \-- <data for scenario2>
|
+-- test_func1.py

通过不对实际数据运行测试,unittest是关于确定性输入和输出的。在它的执行过程中,一个大目录可能需要几个小时,但您可以控制它的输入,以便它能够覆盖可能的情况并仍然快速运行。将进程拆分为函数,单独测试它们并模拟输入。在一小块示例数据上测试它。在运行消耗大量时间的海量数据之前,请以系统化的方式运行代码。