Python 有像 Junit 一样可以执行部分代码的方法吗?

2020-07-27 14:39:53 +08:00
 efaun
背景:从 java 转 python 的初学者

我想实现的目的是:



在这三个方法中可以怎样选择性执行 one() or two() or three()?

我百度了下,可以创建测试类,但是它会输出一个测试报告,且会进行断言,而我的目的不是进行单元测试,是要在一个 py 文件里单独执行不同的方法

还可以在 pycharm 里使用 shift+alt+e 执行代码片段,但是我会些一些逻辑在里面,还有 import,这个方法也不行

对比 java,有 junit 可以实现:



可以分别执行这三个方法,那么轮子众多的 python 也一定有相应的方法才对,只是我没有找到,所以请教各位,我可以怎么做?
2449 次点击
所在节点    Python
32 条回复
leishi1313
2020-07-27 15:05:17 +08:00
XY 问题,虽然图和字不少,但还是没聊清楚你到底想要干什么
LokiSharp
2020-07-27 15:08:15 +08:00
Google 搜索 “Python 单元测试”
imn1
2020-07-27 15:08:45 +08:00
弱弱地问一下,你见过这句吗?

if __name__ == '__main__':
efaun
2020-07-27 15:09:03 +08:00
@leishi1313 #1 还不够清楚吗,

在 python 里怎样选择性执行 one() or two() or three()?
efaun
2020-07-27 15:09:41 +08:00
@LokiSharp #2 已经说过了,它会输出一个测试报告,且会进行断言,而我的目的不是进行单元测试,是要在一个 py 文件里单独执行不同的方法
wellsc
2020-07-27 15:13:40 +08:00
```python
def one_or_two_or_three():
if one:
one()
elif two:
two()
else:
three()

one_or_two_or_three()
```
这样?
efaun
2020-07-27 15:13:55 +08:00
@imn1 #3 这可以实现我文中的情况,但是更复杂的无法实现,一个 py 文件里十几个方法,虽然可以在选择性执行一个的时候来来回回注释其他的方法,但是这太麻烦了,更希望有 junit 一键执行的方法
efaun
2020-07-27 15:13:59 +08:00
@imn1 #3
这可以实现我文中的情况,但是更复杂的无法实现,一个 py 文件里十几个方法,虽然可以在选择性执行一个的时候来来回回注释其他的方法,但是这太麻烦了,更希望有 junit 一键执行的方法
GeruzoniAnsasu
2020-07-27 15:14:30 +08:00
没人看得懂想问啥

执行 one:

one()

(摊手)
GeruzoniAnsasu
2020-07-27 15:15:45 +08:00
看起来似乎在说 必须要在 ide 里自动给每个函数弄出一个绿色三角能点?
leishi1313
2020-07-27 15:16:37 +08:00
@efaun 那我帮你组织下语言,你想问的是,如何在 pycharm 里执行一个 Python 文件里的某个函数,对吗?
efaun
2020-07-27 15:17:51 +08:00
@wellsc #6 呃……我说的 or 是或的意思……就是执行其中一个的时候不会执行其他的
efaun
2020-07-27 15:18:26 +08:00
@GeruzoniAnsasu #10 @leishi1313 #11
是的😂
imn1
2020-07-27 15:18:32 +08:00
if __name__ == '__main__':
下面写你想运行的东西(调用上面的函数),例如
one()
three()
two()
然后单独运行这个 py,它只会执行这句后面的内容

这句及下面的语句,在 import 时不执行,因为运行主体不是'__main__',所以没影响
imn1
2020-07-27 15:20:55 +08:00
@efaun #8
这样的话,你需要的是一个具有这种功能的 IDE 插件或扩展,而不是问 python 怎么写
efaun
2020-07-27 15:22:43 +08:00
@imn1 #14 这个方法我知道,如果#10 和#11 帮我组织了语言以后仍然没有解决方案的话,就这样手动操作吧

感觉我的描述可能懂 java 的更好理解一些,刚学 python,不知道该怎么描述
efaun
2020-07-27 15:23:29 +08:00
@imn1 #15 对,是这样,方向错了
GeruzoniAnsasu
2020-07-27 15:25:34 +08:00
@efaun 创建一个 python test 文件,然后在单元测试类里的函数转调用你的 one two three

https://imgur.com/a/9gaIqqZ
imn1
2020-07-27 15:26:33 +08:00
补个 append 吧,后面进来的人不一定看到这几楼
我不用 pycharm,所以帮不了你
efaun
2020-07-27 15:29:05 +08:00
@GeruzoniAnsasu #18 使用单元测试的方法不适合我,python 的单元测试会输出断言结果,而不是代码的执行结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/693445

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX