DevOps系列 之 Python与Java互相调用的案例

Python和Java是两种非常流行的编程语言。Python是一种解释型语言,而Java则是一种编译型语言。两者都有广泛的应用,尤其是在测试领域。在本文中,我们将讨论如何使用Python测试Java源代码,Java如何调用Python脚本。

单元测试

单元测试是一种测试方法,用于测试程序的最小单元——函数或方法。Python有许多用于单元测试的库,如unittest和pytest。Java也有许多用于单元测试的库,如JUnit和TestNG。

要使用Python测试Java代码的话,可以使用Jython这个工具。Jython是一个Python解释器,可以直接运行Java字节码。这使得我们可以使用Python编写测试用例,并在Jython中运行Java代码。

以下是一个示例:

Python代码部分

from com.example.demo import Mainprint(Main.printLog())print(Main.getLog())

Java代码部分 

package com.example.demo;/*** @Author 虎哥* @Description //TODO* |要带着问题去学习,多猜想多验证|**/
public class Main {public Main() {System.out.println("Hello, Welcome this shell.");}/*** @author Q-WHai* 2015-4-13*/public static void main(String[] args) {new Main();}public static void printLog() {System.out.println("This is a shell log show 2 you. And you will get nothing whit this function return.");}public static String getLog() {String toReturn = "Custom log";System.out.println("This is another shell log show 2 you. And you will get a return String.");return toReturn;}
}

保证你安装了Jdk环境和Jython环境

下载地址

Downloads | Jython

然后执行如下命令

  1. 确保你的Java类在正确的包中,并且这个包名与你在Python中导入的模块名一致。

  2. 确保你的Java类文件在Python的搜索路径中。你可以通过设置-Dpython.path环境变量来添加路径。例如,如果你的类文件在"D:\SoftwareDev\Code\demo\target\classes\com\example\demo",你可以在命令行中运行以下命令:

jython -Dpython.path=D:\SoftwareDev\Code\demo\target\classes\ TestJava.py

多语言混合编程是指在同一个程序中使用多种编程语言。Python和Java都支持多种编程语言的混合编程。

要在Python中调用Java代码,也可以使用JPype这个工具。JPype是一个Python库,可以用于调用Java代码。以下是一个示例:

import jpype
jpype.startJVM(jpype.getDefaultJVMPath())
java_lang_System = jpype.JClass('java.lang.System')
java_lang_System.out.println('Hello, world!')
jpype.shutdownJVM()

在这个示例中,我们使用JPype调用了Java中的System类,并使用System.out.println方法输出了一条消息。我们首先启动了JVM,然后导入了Java中的System类,并使用out.println方法输出了一条消息。最后,我们关闭了JVM。

要在Java中调用Python代码,可以使用Jython这个工具。Jython是一个Python解释器,可以直接运行Python代码。以下是一个示例:

import org.python.util.PythonInterpreter;public class TestPython {
public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.exec("print('Hello, world!')");}
}

在这个示例中,我们使用Jython调用了Python中的print函数,并输出了一条消息。

调用Python脚本 calculate.py


def add(a, b):return a + bdef sub(a, b):return a - bif __name__ == "__main__":result = add(1,3)print(result)

结论Python和Java都是非常强大的编程语言,它们都有广泛的应用。在测试领域,Python和Java都有许多用于测试的库和工具。增强了多种语言能力的整合和拓展性,我们可以根据具体场景选择使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/317059.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++八股学习心得.2

1.C常量 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 …

vue保姆级教程----深入了解Vuex的工作原理

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 CSS专栏:想学CSS的,冲这里 &#x1f4…

基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 双闭环PI控制器设计 4.2 SVPWM技术 4.3 控制系统实现 5.完整工程文件 1.课题概述 基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真。系统包括逆变桥、PMSM、park变换、clark变换、SVPWM、PI控…

点云体素化

文章目录 环境:1.1 体素化介绍:2.1 python代码3.1 可视化 环境: Open3D 1.1 体素化介绍: 用一个个小体素去占据点云 2.1 python代码 conda activete deeplabv3plus(环境名称–安装好open3D的) python demo.py import open3d a…

AILDL详解

AIDL(Android接口描述语言)是一个IDL(Interactive Data Language/交互式数据语言)语言,它可以生成一段代码,可以是一个在Android设备上运行的两个进程使用内部通信进程进行交互。 如果你想在一个安卓程序/…

【vue/uniapp】pdf.js 在一些型号的手机上不显示

引入: uniapp 项目通过 pdf.js 来在线浏览 pdf 链接,在微信小程序中都显示正常,但是通过 app 跳转小程序,在苹果、小米显示正常,但是华为和 oppo 就不显示,可以通过降 pdf.js 的版本来解决这个问题。 解决&…

three.js 多通道组合

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div style"border: 1px so…

c语言和python区别哪个难,c语言和python区别大不大

大家好&#xff0c;给大家分享一下c语言和python区别主要用来写什么&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; Python可以说是目前最火的语言之一了&#xff0c;人工智能的兴起让Python一夜之间变得家喻户晓&#xff0c;Python号称目…

YOLOv8改进 | 检测头篇 | DynamicHead原论文一比一复现 (不同于网上版本,全网首发)

一、本文介绍 本文给大家带来的改进机制是DynamicHead(Dyhead),这个检测头由微软提出的一种名为“动态头”的新型检测头,用于统一尺度感知、空间感知和任务感知。网络上关于该检测头我查了一些有一些魔改的版本,但是我觉得其已经改变了该检测头的本质,因为往往一些细节上才…

day03 移除链表元素 设计链表 反转链表

题目1&#xff1a;203 移除链表元素 题目链接&#xff1a;203 移除链表 题意 删除链表中所有满足Node.valval的节点 返回新的头节点 注意使用cur临时指针&#xff0c;遍历链表&#xff0c;这样才可以最终返回head&#xff0c;不可以拿着head去遍历&#xff0c;否则&#…

Ant Design Vue 编译后的网页特点是什么,怎么确认他是用的前端 Ant Design Vue 技术栈的呢?

Ant Design Vue 是一个前端 UI 框架&#xff0c;使用 Vue.js 构建。它包含了大量的预设样式和组件&#xff0c;如按钮、表单、表格等&#xff0c;可以帮助开发者快速构建出优雅且功能丰富的网页。但是&#xff0c;要确定一个编译后的网页是否使用了 Ant Design Vue&#xff0c;…

lunux(mysql下载以及操作)

下载mysql 查看镜像 docker images 下载MySQL镜像 mysql/mysql-server:8.0 创建文件夹&#xff0c;创建配置文件和放数据文件 mkdir -p /data/mysql/{conf,,data} 创建配置文件 my.cnf 写入配置文件my.cnf的代码 [client] default-character-setutf8[mysql] de…