如何“模拟”SVN

软件测试 自动化测试 Python
2022-01-17 14:47:40

我正在测试一个执行一些颠覆交互的应用程序,例如提交、添加、统计等。

什么是让我开始模拟我使用的颠覆客户端和工作目录等的好方法。这将在 Python 中。

因此,例如,当我检查存储库是否是有效存储库时,我会尝试与网络资源建立 http 连接。如果我尝试连接到不存在的资源并且只是让我的模拟客户端引发该异常等,我是否检查我的应用程序中抛出了什么异常?我在正确的道路上吗?

1个回答

是的,您走在正确的道路上(尽管我有一两个警告)。

比“提出正确的例外”更普遍:策略是确保无论 SVN 如何响应您的应用程序的命令,您的应用程序都会按照您的意愿响应。

对我来说,模拟第三方代码时最大的挑战是描述:

  • 我的代码使用第三方代码的所有方式
  • 第三方代码可能响应我的使用的所有方式。
  • 您希望您的应用在每种情况下如何响应。

但是一旦你描述了这些东西,嘲笑通常是直截了当的:

  1. 编写一个测试以使您的应用程序以一种可能的方式与 SVN 交互
  2. 编写您的模拟以一种可能的方式进行响应
  3. 验证您的应用程序是否按计划响应。

一个警告。我不确定“如果我尝试连接到不存在的资源并让我的模拟客户端引发该异常,请检查我的应用程序中抛出了什么异常”是什么意思。听起来好像(至少在那种情况下)您的应用只是将 SVN 异常传递给其用户。如果这只是您的应用程序如何响应的一个示例,那么可以。但是如果你的意思是一般的事情(即“我的应用程序总是将 SVN 异常传递给它的用户”),我不知道这是否是正确的做法。

关键是让模拟引发真正的 SVN 在这种情况下引发的任何异常,并验证您的应用程序是否做出了正确的响应。您的应用程序的工作可能是:

  • 将 SVN 异常传递给您的应用程序的用户(如您的示例中所示)
  • 考虑到你的代码知道它当时在做什么,抛出一个新的、更具描述性的异常(当我可以识别或发明一个更有意义的异常时,我更喜欢这个)
  • 重试连接
  • 切换到其他一些连接方式
  • 还有什么...