# GreaterWMS接口测试 **Repository Path**: cow111023/GreaterWMS_interface ## Basic Information - **Project Name**: GreaterWMS接口测试 - **Description**: GreaterWMS接口测试,针对目标为开源项目的GreaterWMS - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-08-11 - **Last Updated**: 2023-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 导航 - [跳转到 add_asn.py 测试脚本说明](#add_asnpy测试脚本说明) - [跳转到 add_asn_operator.py 测试脚本](#add_asn_operatorpy测试脚本) - [跳转到 add_asn_presort.py 测试脚本](#add_asn_presortpy测试脚本) - [跳转到 add_asn_stored.py 测试脚本](#add_asn_storedpy测试脚本) - [跳转到 add_asn_sortstock.py 测试脚本](#add_asn_sortstockpy测试脚本) # add_asn.py测试脚本说明 这是一个用于创建到货通知书的测试脚本,它包含了各种功能,例如配置环境、发送HTTP请求、记录测试结果等。 ## 导入模块 脚本首先导入了一些Python模块,用于不同的任务: - `requests`:用于发送HTTP请求。 - `csv`:用于处理CSV文件。 - `random`:用于生成随机数据。 - `socket`:用于处理网络连接。 - `datetime`:用于处理日期和时间。 - `json`:用于处理JSON数据。 ## `AsnTest` 类定义 脚本定义了一个名为`AsnTest`的测试类,它继承自`unittest.TestCase`,所有有关到货通知书的功能都被定义成了AsnTest类,用于定义测试用例以及测试的设置和清理操作。 ## `setUp` 方法 `setUp`方法用于在运行测试用例之前设置测试环境,这是一个公共方法。它执行以下操作: - 获取共享的IP地址。 - 生成用于两个端点的URL,分别是“asn/list”和“asn/detail”。 - 获取共享的HTTP请求头。 - 从名为"config.json"的JSON配置文件中加载配置信息。 ## `generator_asn_code` 方法 这个方法用于生成到货通知书的编号。它执行以下步骤: - 发送一个HTTP POST请求到`asncodeurl`,请求头包括`headers`,请求体包括一个`creater`字段,值为"cow11023"。 - 如果响应的状态码为200,就从响应的JSON数据中提取到货通知书的编号(`asn_code`),然后将该编号返回。 - 如果响应状态码不是200,方法返回`None`表示生成失败。 ## `add_asn` 方法 这个方法模拟了添加到货通知书的过程。它执行以下操作: - 创建一个空列表`responses`,用于收集每次循环的响应。 - 从两个CSV文件中读取供应商和商品编码的信息。 - 针对指定数量的到货通知书(由配置文件中的`asn_count`指定),进行以下操作: - 通过调用`generator_asn_code`方法获取一个到货通知书编号(`asn_code`)。 - 从供应商列表中随机选择一个供应商。 - 针对每个到货通知书,通过随机选择一个商品编码、生成一个随机的数量,构建到货通知书数据(`asn_data`),然后使用HTTP POST请求将其添加到系统中。 - 响应结果被收集到`responses`列表中。 ## `test_add_asn_01` 方法 这是一个测试用例方法,用于执行测试。它执行以下操作: - 调用`add_asn` 方法创建到货通知书并收集响应。 - 对于每个响应,比较响应的`detail`字段与期望的响应`{"detail": "success"}`。 - 将测试结果包括响应、到货通知书编号、商品编码、数量以及测试结果状态添加到`test_results`列表中。 ## `tearDown` 方法 `tearDown` 方法在所有测试用例执行完后执行,用于完成测试后的清理工作。它执行以下操作: - 如果存在`test_results`属性(表示已经执行了测试),则生成包含测试结果的CSV文件,包括响应数据、到货通知书编号、商品编码、数量以及测试结果状态。 ## 主执行块 在主执行块中,脚本检查是否被作为主程序运行。它执行以下操作: - 运行`AsnTest`类中定义的测试用例,使用`unittest.TextTestRunner`执行测试,并获取测试结果。 - 打印出所有测试用例是否成功的消息。 - 手动输出测试结果,包括之前记录在`test_results`列表中的测试数据。 # add_asn_operator.py 测试脚本 这个测试脚本用于执行到货通知书的确认到货操作。它包含了一些测试逻辑和测试用例,用于确认到货通知书的状态是否正确转换。 ## 导入模块 脚本开始时导入了一些必要的Python模块: - `requests`:用于发送HTTP请求。 - `unittest`:用于编写和运行测试用例。 - `setup_common`:自定义公共模块,包含了一些通用的设置和函数。 - `csv`:用于处理CSV文件。 - `os`:用于操作操作系统的文件和目录。 ## `AsnTest` 测试类定义 脚本定义了一个名为`AsnTest`的测试类,它继承自`unittest.TestCase`,所有有关到货通知书的功能都被定义成了AsnTest类,用于编写测试用例。 ## `setUp` 方法 `setUp`方法用于在每个测试用例之前进行设置。是一个公共方法,它执行以下操作: - 获取共享的IP地址。 - 生成三个不同的URL,分别用于查看到货通知书、获取到货通知书列表和进行预加载操作。 - 获取共享的HTTP请求头。 - 创建一个空列表`asn_list`,用于存储到货通知书信息。 ## `get_asn_list` 方法 这个方法执行了两个重要的测试逻辑: 1. 生成所有的到货通知书列表,并将其作为测试用例的输入条件。 2. 获取测试用例中`asn_status=1`的行作为输入,预期结果为`asn_status=2`。 - 第一部分:生成到货通知书列表 - 通过不断发送HTTP GET请求到特定URL,获取到所有到货通知书的信息。 - 将所有的到货通知书ID、到货通知书编号和完整的到货通知书信息存储在`all_asn_id`、`asn_code`和`asn_list`中。 - 第二部分:获取`asn_status=1`的行 - 方法内部会检查是否已经存在名为"asn_list.csv"的CSV文件,如果不存在则调用`test_get_asn_list`方法生成。 - 无论文件是否存在,都会进行文件读取和处理逻辑。 - 逐行读取CSV文件,跳过第一行,然后检查`asn_status`字段是否为1。 - 对于`asn_status=1`的行,将其ID作为参数,发送HTTP POST请求进行到货确认操作。 - 同时,将`asn_status`字段的值修改为2,并将这些行添加到`rows_to_assert`列表中,以备后续断言。 ## `test_get_asn_list` 方法 这个方法执行以下操作: - 调用`get_asn_list`方法来生成到货通知书列表,并将结果写入名为"asn_list.csv"的CSV文件中。 - 生成CSV文件的表头为`id`、`asn_code`、`asn_status`和`supplier`。 ## `test_post_asn_confirm` 方法 这个方法执行了测试逻辑2,以`asn_status=1`作为输入,预期结果为`asn_status=2`。它执行以下操作: - 检查是否已存在名为"asn_list.csv"的CSV文件,如果不存在则调用`test_get_asn_list`方法生成。 - 无论文件是否存在,都会进行文件读取和处理逻辑。 - 遍历CSV文件的每一行,对于`asn_status=1`的行,发送HTTP POST请求进行到货确认操作。 - 同时,将`asn_status`字段的值修改为2,并将这些行添加到`rows_to_assert`列表中,以备后续断言。 - 返回符合条件的所有行。 ## `test_asn_confirm` 方法 这个方法执行断言操作,用于验证到货通知书的状态是否正确转换。它执行以下操作: - 调用`test_post_asn_confirm`方法获取所有需要断言的行。 - 对于每一行,获取实际的`asn_status`和预期的`asn_status`(都为字符串类型)。 - 使用断言语句验证实际状态是否等于预期状态,如果不等则断言失败。 ## 主执行块 在主执行块中,脚本检查是否被作为主程序运行。如果是,它会运行所有的测试用例,并显示测试结果。 # add_asn_presort.py 测试脚本 这个测试脚本用于执行到货通知书的卸贷操作。它包含了一些测试逻辑和测试用例,用于验证到货通知书的状态是否正确转换。 ## 导入模块 脚本开始时导入了一些必要的Python模块: - `requests`:用于发送HTTP请求。 - `unittest`:用于编写和运行测试用例。 - `setup_common`:自定义模块,包含了一些通用的设置和函数。 - `csv`:用于处理CSV文件。 - `os`:用于操作操作系统的文件和目录。 ## `AsnTest` 测试类定义 脚本定义了一个名为`AsnTest`的测试类,它继承自`unittest.TestCase`,所有有关到货通知书的功能都被定义成了AsnTest类,用于编写测试用例。 ## `setUp` 方法 `setUp`方法用于在每个测试用例之前进行设置,是一个公共方法。它执行以下操作: - 获取共享的IP地址。 - 生成三个不同的URL,分别用于查看到货通知书、获取到货通知书列表和进行卸贷操作。 - 获取共享的HTTP请求头。 - 创建一个空列表`asn_list`,用于存储到货通知书信息。 - 创建一个空列表`test_results`,用于收集测试结果。 ## `get_asn_list` 方法 这个方法执行了两个重要的测试逻辑: 1. 生成所有的到货通知书列表,并将其作为测试用例的输入条件。 2. 获取测试用例中`asn_status=2`的行作为输入,预期结果为`asn_status=3`。 - 第一部分:生成到货通知书列表 - 通过不断发送HTTP GET请求到特定URL,获取到所有到货通知书的信息。 - 将所有的到货通知书ID、到货通知书编号和完整的到货通知书信息存储在`all_asn_id`、`asn_code`和`asn_list`中。 - 第二部分:获取`asn_status=2`的行 - 方法内部会检查是否已经存在名为"asn_list.csv"的CSV文件,如果不存在则调用`test_get_asn_list`方法生成。 - 无论文件是否存在,都会进行文件读取和处理逻辑。 - 遍历CSV文件的每一行,跳过第一行,然后检查`asn_status`字段是否为2。 - 对于`asn_status=2`的行,将其ID作为参数,发送HTTP POST请求进行卸贷操作。 - 同时,将`asn_status`字段的值修改为3,并将这些行添加到`test_results`列表中,以备后续断言。 ## `test_get_asn_list` 方法 这个方法执行以下操作: - 调用`get_asn_list`方法来生成到货通知书列表,并将结果写入名为"asn_list.csv"的CSV文件中。 - 生成CSV文件的表头为`id`、`asn_code`、`asn_status`和`supplier`。 ## `test_post_asn_presort` 方法 这个方法执行了测试逻辑2,以`asn_status=2`作为输入,预期结果为`asn_status=3`。它执行以下操作: - 检查是否已存在名为"asn_list.csv"的CSV文件,如果不存在则调用`test_get_asn_list`方法生成。 - 无论文件是否存在,都会进行文件读取和处理逻辑。 - 遍历CSV文件的每一行,对于`asn_status=2`的行,发送HTTP POST请求进行卸贷操作。 - 同时,将`asn_status`字段的值修改为3,并将这些行添加到`test_results`列表中,以备后续断言。 - 返回符合条件的所有行。 ## `test_asn_presort` 方法 这个方法执行断言操作,用于验证到货通知书的状态是否正确转换。它执行以下操作: - 调用`test_post_asn_presort`方法获取所有需要断言的行。 - 对于每一行,获取实际的`asn_status`和预期的`asn_status`(都为字符串类型)。 - 使用断言语句验证实际状态是否等于预期状态,如果不等则断言失败。 ## 主执行块 在主执行块中,脚本检查是否被作为主程序运行。如果是,它会运行所有的测试用例,并显示测试结果。 # add_asn_stored.py 测试脚本 这个测试脚本用于执行到货通知书的分拣操作。它包含了一些测试逻辑和测试用例,用于验证到货通知书的状态是否正确转换,同时模拟提交货物分拣数据。 ## 导入模块 脚本开始时导入了一些必要的Python模块: - `csv`:用于处理CSV文件。 - `json`:用于处理JSON数据。 - `requests`:用于发送HTTP请求。 - `unittest`:用于编写和运行测试用例。 - `setup_common`:自定义模块,包含了一些通用的设置和函数。 ## `AsnTest` 测试类定义 脚本定义了一个名为`AsnTest`的测试类,它继承自`unittest.TestCase`,所有有关到货通知书的功能都被定义成了AsnTest类,用于编写测试用例。 ## `setUp` 方法 `setUp`方法用于在每个测试用例之前进行设置,这是一个公共方法。它执行以下操作: - 获取共享的IP地址。 - 生成两个不同的URL,分别用于提交货物分拣数据和获取到货通知书详情。 - 获取共享的HTTP请求头。 - 创建一个文件名为"asn_list.csv"的CSV文件,用于存储到货通知书列表。 ## `read_csv_file` 方法 这个方法用于读取CSV文件中的数据,将数据转化为Python数据结构。它执行以下操作: - 打开CSV文件,指定字段名。 - 逐行读取数据,跳过表头行。 - 将每一行数据转化为字典形式,并将这些字典添加到一个列表中。 - 返回包含CSV数据的列表。 ## `update_csv_file` 方法 这个方法用于更新CSV文件中的数据。它接受一个数据列表,将列表中的数据写回CSV文件中。 ## `get_asn_detail` 方法 这个方法用于获取到货通知书的详情,包括相关货物信息。它执行以下操作: - 遍历传入的数据列表,对于`asn_status`字段为"3"的记录,说明这些记录需要进行货物分拣操作。 - 通过HTTP GET请求获取到货通知书的详情,包括货物信息。 - 将获取的货物信息整理成一个新的列表,包括货物ID、到货通知书编号、货物编号、货物数量以及货物实际数量。 - 返回包含货物信息的列表。 ## `post_asn_stored` 方法 这个方法用于模拟提交货物分拣数据。它执行以下操作: - 构建一个payout列表,用于存储分拣数据,每个payout对应一个到货通知书的货物分拣数据。 - 获取每个到货通知书的供应商信息。 - 构造一个字典,以asn_code为键,对应的货物分拣数据列表为值。 - 创建最终的payout数据,包括到货通知书编号、供应商信息、货物分拣数据和操作者信息。 - 构造asn_stored_url和payout数据,然后通过HTTP POST请求发送分拣数据。 - 更新已处理过分拣操作的到货通知书记录的`asn_status`字段,将其加1(这一部分根据需求可以更改)。 - 将更新后的数据写回CSV文件。 ## `test_asn_stored` 方法 这个方法是主要的测试用例。它执行以下操作: - 读取CSV文件中的到货通知书列表。 - 调用`get_asn_detail`方法获取符合条件的到货通知书的货物详情。 - 将`asn_status`为3的到货通知书的`asn_status`置为4(这一部分根据需求可以更改)。 - 调用`post_asn_stored`方法提交分拣数据。 ## 主执行块 在主执行块中,脚本检查是否被作为主程序运行。如果是,它会运行所有的测试用例,并显示测试结果。 # add_asn_sortstock.py 测试脚本 这个测试脚本用于执行到货通知书的上架操作,其中包括了生成移库数据和向服务器提交移库请求。脚本使用多线程来处理不同的移库请求,以提高效率。下面是对脚本的详细解释: ## 导入模块 脚本开始时导入了一些必要的Python模块: - `requests`:用于发送HTTP请求。 - `threading`:用于实现多线程操作。 - `unittest`:用于编写和运行测试用例。 - `setup_common`:自定义模块,包含了一些通用的设置和函数。 - `csv`:用于处理CSV文件。 - `random`:用于生成随机数据。 - `logging`:用于记录日志。 ## `AsnTest` 测试类定义 脚本定义了一个名为`AsnTest`的测试类,它继承自`unittest.TestCase`,,所有有关到货通知书的功能都被定义成了AsnTest类,用于编写测试用例。 ## `setUp` 方法 `setUp` 方法用于在每个测试用例之前进行设置,这是一个公共方法。它执行以下操作: - 获取共享的IP地址。 - 生成两个不同的URL,一个用于获取到货通知书的详情,另一个用于移库操作。 - 获取共享的HTTP请求头。 - 创建一个空列表`asn_list`,用于存储从服务器获取的ASN数据。 - 调用`read_bin_names_from_csv`方法,从CSV文件中读取库位名称列表。 ## `get_asn_list` 方法 这个方法用于从服务器获取符合条件的ASN数据,并生成移库数据的生成器。它执行以下操作: - 发送HTTP GET请求以获取ASN数据。 - 解析响应中的ASN数据,包括ASN总数、ASN状态等。 - 循环处理ASN数据,生成移库数据的生成器,其中包含一些字段,如`id`、`bin_name`、`asn_code`、`supplier`等。 - 在每次迭代后,减少ASN总数。 ## `read_bin_names_from_csv` 方法 这个方法用于从CSV文件中读取库位名称列表。它执行以下操作: - 打开CSV文件,读取库位名称列。 - 将库位名称添加到一个列表,并返回该列表。 ## `test_move_stock` 方法 这个方法是主要的测试用例,用于处理移库操作。它执行以下操作: - 通过调用`get_asn_list`方法获取移库数据的生成器。 - 遍历移库数据生成器,为每个移库数据创建一个线程。 - 在每个线程中,创建移库URL和移库数据,然后发送HTTP POST请求以移库。 - 打印移库数据和请求URL。 - 在每次迭代后,检查是否还有ASN数据需要处理,如果没有则停止循环。 ## 主执行块 在主执行块中,脚本检查是否被作为主程序运行。如果是,它会运行所有的测试用例,并显示测试结果。 脚本的核心部分是多线程处理,以同时提交多个移库请求,提高了效率。