在JetBrains IDEA或PyCharm中运行指定单元测试方法
在PyCharm/IDEA中单独运行指定单元测试方法的几种方式
问题原因
你当前的代码里虽然写了只运行test_one的TestSuite,但JetBrains IDE默认会用python -m unittest命令直接扫描文件中的所有测试方法,不会执行你写的if __name__ == '__main__'逻辑,所以才会同时跑两个测试。下面是几种不用命令行的解决办法:
方法一:直接运行单个测试方法(最快捷)
打开你的测试文件,找到test_one方法的定义行:
- 在代码左侧的行号区域(gutter)会显示一个绿色的运行小图标
- 点击这个图标,选择「Run 'test_one'」即可,IDE会只执行这一个测试方法,无需修改任何代码
方法二:自定义unittest运行配置
如果需要频繁运行这个特定测试,可以创建专属的运行配置:
- 点击顶部工具栏的运行配置下拉菜单,选择「Edit Configurations...」
- 点击左上角的「+」按钮,选择「Python tests」→「Unittest」
- 在配置面板中填写:
- Name:随便起个好认的名字,比如「Run test_one only」
- Target:选择「Method」,然后在输入框中填写完整的方法路径,格式为
文件名.Test类名.测试方法名(比如你的文件是so.py,就填so.TestMyMethods.test_one) - Python interpreter:选择你当前使用的Python环境
- 点击「Apply」保存配置,之后直接点击运行按钮就能只跑
test_one
方法三:让IDE执行你写的TestSuite逻辑
如果你想保留代码里的TestSuite配置,让IDE执行脚本的main函数:
- 打开运行配置面板,点击「+」选择「Python」
- 配置项填写:
- Name:比如「Run Custom Test Suite」
- Script path:选择你的测试文件路径(比如
C:\Users\mpx\so.py) - Python interpreter:对应你的环境
- 保存后运行,IDE就会执行你写的
if __name__ == '__main__'里的逻辑,只运行test_one
你的测试代码
import unittest class TestMyMethods(unittest.TestCase): def setUp(self): # 设置每个测试方法执行前的必要状态 pass def test_one(self): # 测试方法 print('Running test: one') def test_two(self): # 测试方法 print('Running test: two') if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(TestMyMethods('test_one')) unittest.TextTestRunner().run(suite)
当前异常运行输出
Testing started at 1:09 PM ... Launching unittests with arguments python -m unittest C:\Users\mpx\so.py in C:\Users\Users Running test: one Running test: two Ran 2 tests in 0.002s OK Process finished with exit code 0
内容的提问来源于stack exchange,提问作者rpb
相关产品推荐
相关产品推荐

