【问题标题】:how do you write unit tests in python for a java software [closed]你如何在python中为java软件编写单元测试[关闭]
【发布时间】:2020-06-07 01:06:58
【问题描述】:

如何在 python 中为 java 软件编写单元测试?这个想法是自动化java程序的单元测试,但自动化框架与python一起工作。有可能吗?

【问题讨论】:

  • 单元测试旨在验证代码块的功能并需要访问模块。所以答案是否定的。但是,由于您使用自动化和自动化框架这两个词——我猜你实际上是打算测试一个特性——集成测试。在这种情况下,您始终可以从 python 调用代码来模拟功能调用并测试行为。如果是 Web 应用程序,则在 python 中调用 URL 端点以获取各种输入并验证输出。

标签: java python unit-testing


【解决方案1】:

几乎任何事情都是可能的理论上。但有些东西并不实用。

首先,如果您谈论的是 Jython 而不是 Python,这相对简单:

(但也请参阅 When will Jython support Python 3? ... 鉴于 Python 2 现在“生命终结”。)

本文的其余部分假设您在谈论“真正的”Python。


Java 程序的单元测试意味着您正在调用应用程序代码库中的方法。您的单元测试通常使用模拟框架来创建模拟对象来模拟应用程序的其他部分。单元测试和模拟框架通常用 Java 实现。

如果您要将单元测试实现为 Python 方法,那么您的 Python 单元测试方法将进行多个从 Python 到 Java 的跨语言调用。在模拟对象的情况下,应用程序代码(被测)将进行从 Java 到 Python 的跨语言调用。

调用单向是可能的,尽管在 Python 和 Java 之间映射值以及其他事情时,您需要担心各种混乱的事情。双向通话?不知道有没有实用性1.

简而言之:这太难实现了。用 Java 实现 Java 单元测试会更有效(您的时间和您的同事的时间)。


以上是针对常规Java应用程序单元测试的。测试 Java Web 应用程序怎么样?

无论 webapp 是用什么语言实现的,这些都应该可以工作。但我认为它们不是“单元测试”在该术语的传统含义中


最后,如果您只想运行一些Java 单元测试来自 Python,那应该很容易。只需弄清楚如何从命令行运行 Java 单元测试框架的启动器。然后从 Python 中执行此操作。

您可以理论上在更细粒度的级别上做到这一点,但在实践中会很难。 Java JUnit 测试的 Python 运行程序需要能够识别包含各种 JUnit 注释的 Java 类,以便确定测试是什么。 (没听说过


1 - 理论上是可能的。开发支持此功能的 Java 和 Python 实现所需的一切。这“只是”几年的开发努力:-)。

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 2019-01-18
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    相关资源
    最近更新 更多