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 也一定有相应的方法才对,只是我没有找到,所以请教各位,我可以怎么做?
2360 次点击
所在节点    Python
32 条回复
xiaolinjia
2020-07-27 15:29:20 +08:00
doctest 、unittest
Trim21
2020-07-27 15:30:16 +08:00
python 里面一般这么干:

test_a.py:

def test_one(): print('one')
def test_two(): print(2)
def test_three(): print(3)

然后 pytest -k 'one or two or three'"
Trim21
2020-07-27 15:31:09 +08:00
pytest 只是屏蔽掉了 stdout,用-s 参数就可以正常输出了
leishi1313
2020-07-27 15:31:50 +08:00
你在 intellij 里用 JUnit 选择执行某一个函数本来就是滥用。
正规点的用法是写 run 的 configuration,然后 command line 里写-c "from xx import one; one()",要单独执行多少个写多少这样的 config
efaun
2020-07-27 15:34:01 +08:00
@leishi1313 #24 但是这样很方便不是么~
efaun
2020-07-27 15:36:58 +08:00
@Trim21 #23 我仔细研究研究,谢谢了
GeruzoniAnsasu
2020-07-27 15:38:59 +08:00
@efaun 然而并不

https://imgur.com/a/B4NN9he

如果单元测试吐不出 stdout 为啥你第一反应不是去找吐不出 stdout 的原因而是问有没有“其它办法”呢

话说 jetbrains IDE 旁边这些运行就是给单元测试特化的,如果不是单测文件本来就不会有这些运行按钮
xinyana
2020-07-27 15:41:47 +08:00
if?
efaun
2020-07-27 15:54:43 +08:00
@GeruzoniAnsasu #27
懂了,thx~
j0hnj
2020-07-27 15:54:46 +08:00
chinvo
2020-07-27 15:56:12 +08:00
junut 就是单元测试
JieS
2020-07-27 17:31:28 +08:00
pytest
也是用 @修饰符来运行方法的,跟 testng,junit 相似

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

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

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

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

© 2021 V2EX