首页 > 解决方案 > 如何使用 python simple-salesforce 测试插入/更新是否成功

问题描述

tl;dr如何测试updateinsert使用 simple-salesforce python 包的可行性?

我正在为我创建的基于 simple-salesforce 的 python 类编写测试脚本。该类涉及sf.bulk.Object_Name__c.insert(data)sf.bulk.Object_Name__c.update(data)代码,但在测试脚本中,我想确认插入/更新是否会成功插入,而无需实际提交新记录或更改。

我看到的唯一表明这可能是可能的项目是Simple-Salesforce 文档中的一个页面,指出该simple_salesforce.tests.test_util模块的存在。不幸的是,我无法弄清楚如何访问这个子模块,或者随后尝试了这个test_util类,并且文档中关于如何访问的说明非常少。

标签: pythontestingsimple-salesforce

解决方案


我不相信这是可能的。simple-salesforce 包本质上是用于构建将挂钩到 Salesforce 的本机 Rest API 的代码的语法糖。

子包 simple_salesforce.tests 不是 Salesforce 测试功能的挂钩,而是 simple_salesforce 本身的测试代码。

您想要完成的测试类型仅限于 Salesforce 的本机 Database.Test 类。这些在 Apex 中构建并在 Salesforce 本身中运行。没有一种好方法可以完成您想做的测试。

您可以编写测试类以确保您的代码生成的请求格式正确,但测试它是否可以在 Salesforce 中实际生成记录需要 simple-salesforce 了解您的所有 SFDC 组织元数据、验证、权限、触发器、流程等。这将需要 simple-salesforce 几乎完全复制 salesforce - 使其变得不那么简单。

我的建议是在沙盒环境中测试您的代码,并确保在直接投入生产之前它可以在那里工作。

或者,(这纯粹是假设性的并且非常 hacky)您可以尝试将自己的挂钩构建到 Salesforce API 中以利用 Database.setSavePoint() 和 Database.rollBack() 函数。您将设置一个保存点,初始化您的批量作业,等待批量作业完成,完成您的测试以确认事情已提交,然后回滚到保存点。


推荐阅读