【问题标题】:Python unittest from command line executes more than expected命令行中的 Python unittest 执行超出预期
【发布时间】:2016-02-09 03:43:57
【问题描述】:

我有一个 Python 测试用例。当使用以下命令从命令行运行测试时,测试结果正确。它显示了 2 个测试用例:

python TestClassAddBasket.py

但是,如果使用以下命令运行:

python -m unittest discover

它运行 2 次并显示 4 个测试用例结果

TestClassAddBasket.py

# -*- coding: UTF-8 -*-
import unittest


class TestClassAddBasket(unittest.TestCase):

    def test_item_one(self):
        .....

    def test_item_two(self):
        ........
        ..........


manuelTextRunner(TestClassAddBasket)

我的手动文本运行器功能是:

def manuelTextRunner(self, TestClassName):
    testnames = unittest.getTestCaseNames(TestClassName,'test_')
    suite = unittest.TestSuite()
    suite.addTests([TestClassName(methodName) for methodName in testnames])
    unittest.TextTestRunner(verbosity=2).run(suite)

为什么我使用python -m unittest discover,因为有很多测试用例,并且可以用一个命令运行。

那么,什么会导致运行测试多次?我的跑步者功能有什么错误吗?

【问题讨论】:

  • if __name__ == '__main__': - 您的电话。
  • 已经试过了。从 -m unittest 命令,它不会检测该行,因为它不是 main

标签: python python-2.7 selenium selenium-webdriver python-unittest


【解决方案1】:

我发现了问题。 已经以test_ 开头的测试用例由 unittest 本身和我的跑步者运行。我把它改成另一个前缀就解决了!!

【讨论】:

    【解决方案2】:

    调用python -m unittest discover 将在TestClassAddBasket.py 中运行您的测试。

    似乎manuelTextRunner(TestClassAddBasket) 可能在TestClassAddBasket.py 中被调用并再次运行您的测试代码。

    除非您需要运行该测试用例手册,否则我会将其删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2017-10-29
      • 2017-07-04
      • 2011-09-26
      • 1970-01-01
      相关资源
      最近更新 更多