问答 搭建 python+requests+excel 接口自动化框架遇到的痛点

pengdongliang · 2023年08月10日 · 最后由 REXLEE 回复于 2023年08月24日 · 10098 次阅读

1、下面是我用例中的代码,里面处理了读取 excel 数据并执行对应的请求

2、下面是我 excel 中的数据

遇到的问题:接口关联中用到的数据全部 setup_module 定义好的字典中,如果想换一个 excel 执行就又需要复制一个相同的用例文件,修改 excel 的路径,但是下面对于 excel 用例执行的代码会有大量的冗余,想把公共的代码抽出来封装成一个方法,但是发现用来保存接口关联中用到数据的 all_val 字典不知道如何进行处理

想实现的结果:用例中只需要传入 excel 的路径,对于 excel 数据的处理调用一个公共方法即可

共收到 14 条回复 时间 点赞

我前段时间发布了一个 requests 接口框架,有兴趣的话可以看看,也是用的 excel 作为数据驱动
https://testerhome.com/topics/37238

我这块做法是读取 excel 时,把每一行的数据转化成了一个字典格式数据,后面用的时候就可以直接找对应的 key 的 value 就好了;然后 jsonpath 单独提取出来,单独对请求参数和相应做处理,放到测试类属性里面当作用户自定义变量使用;
我看你最后是还要把结果回写 excel,我这里其实不太建议这样做,回写我理解为就是输出测试结果生成报告,你可以用 pytest 自带的测试报告或者集成 allure 也可以

Mr.Shuo 回复

谢谢大哥的指点,之前看过你写的这篇文章,后来找不到了😭

问一下 gpt 就行了

你可以将公共的代码抽出来封装成一个方法,并将需要传入的 excel 的路径作为参数。接下来我将为你提供一个示例代码,帮助你理解如何处理 all_val 字典。

首先,你可以定义一个公共方法(例如 execute_testcases)来处理 Excel 数据。这个方法可以接收 excel 文件路径作为参数,然后在其中调用所有需要执行的用例。

在这个方法中,你可以实例化一个空的字典 all_val,用于保存接口关联所需要的数据。然后,你可以在每个用例的循环中,将需要保存的数据添加到 all_val 字典中。

接下来,你可以将 all_val 作为参数传递给具体的接口关联方法,以便进行处理。在这个方法中,你可以使用该字典中的数据来执行接口关联的操作。

下面是一个示例代码,演示了如何处理公共的代码并使用 all_val 字典:

def execute_testcases(excel_path):
    all_val = {}  # 创建空字典
    testcases = read_excel(excel_path)  # 从 excel 文件中读取用例

    for testcase in testcases:
        # 执行每个用例的操作

        # 将需要保存的数据添加到 all_val 字典中
        # 在这里实现将数据存入 all_val 的逻辑

    # 在所有用例执行完毕后,将 all_val 字典作为参数传递给接口关联方法
    process_interface_association(all_val)

def process_interface_association(all_val):
    # 在这里实现接口关联的操作逻辑
    # 可以使用 all_val 字典中的数据进行处理
    # 将 all_val 中的数据关联到接口中

# 调用公共方法并传入 excel 文件路径
execute_testcases('path/to/excel')

请根据你的实际需求,在示例代码中添加相应的逻辑,以实现你想要的结果。希望这个示例能帮到你!

excel 管理接口方便吗

大海 回复

好的,非常感谢大哥的帮助

palmer 回复

挺方便的

palmer 回复

请问还有什么更方便的方案

REXLEE 回复

个人可以做到测试平台当中,做版本管理,变更管理,变更自动触发,以及故障注入,最后引入 CICD 流程当中看护起来。

为啥不用 yaml 管理

Elsie 回复

用 yaml 会比 excel 更方便吗

Elsie 回复

yaml 不好看也没 excel 好管理

palmer 回复

我是想问管理接口的方式 有没有更好的,这个帖子中,是使用 excel 进行接口管理的,真的很不方便维护,特别是用例和接口之间的变动关联,以及接口多了之后,快速定位某一个接口,等等。excel 显然是不太方便的,有没有其他更好对接口进行管理的方式

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册