参考:

http://tieba.baidu.com/p/6008699660

首先造成这个结果的原因是pycharm配置问题

问题验证:

测试代码:

import unittest
class Testadd(unittest.TestCase): def setUp(self):
self.a = 20
self.b = 10 def test_add(self):
result = self.a + self.b
self.assertEqual(result,30)
def test_sub(self):
result = self.a -self.b
self.assertEqual(result,10) if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTest(Testadd("test_add"))
runner = unittest.TextTestRunner()
runner.run(suite)

pycharm执行效果:

使用Unittest做单元测试,addTest()单个case的时候却执行全部的case-LMLPHP

命令行执行效果

使用Unittest做单元测试,addTest()单个case的时候却执行全部的case-LMLPHP

问题解决:

  1. 点击pycharm的右上角下拉菜单,点击Edit configurations

     
  2. 将Python tests里的对应文件的py.test for...或者unittest for...的文件删除(选中后点击左上角的减号)

     

    使用Unittest做单元测试,addTest()单个case的时候却执行全部的case-LMLPHP

  3. 点击+,在下拉菜单中选择Python,然后在右边的script path里...选中所要运行的文件

    使用Unittest做单元测试,addTest()单个case的时候却执行全部的case-LMLPHP

  4. 最后点击ok即可,再在所要运行的文件处(最好是main处)点击右键就会发现run unittest变成了run

再次在pycharm中运行,well done

使用Unittest做单元测试,addTest()单个case的时候却执行全部的case-LMLPHP

总结:

执行unittest in demoSingle就会运行全部case

使用Unittest做单元测试,addTest()单个case的时候却执行全部的case-LMLPHP

而如果运行py文件本身就会只运行addsuite添加的用例

使用Unittest做单元测试,addTest()单个case的时候却执行全部的case-LMLPHP

05-18 11:15