【问题标题】:Python pytest unittest.TextTestRunner doesn't run specific suitesPython pytest unittest.TextTestRunner 不运行特定套件
【发布时间】:2017-02-14 19:42:30
【问题描述】:

我在运行测试套件时遇到问题。 我正在使用 pytest 进行固定装置和测试排序,并使用 unittests 来运行套件。所有测试类都有参数(unittest.TestCase)

我在测试所在的同一目录(文件夹/包)中执行的文件。我使用命令pytest tests/test_suit.py 执行TestSuite。这是test_suit.py:

import unittest
from unittest import TextTestRunner
from unittest import TestLoader

from tests.home_page.login_test import LoginTest
from tests.cloud.cloud_test import CloudTest

tc1 = unittest.TestLoader().loadTestsFromTestCase(CloudTest)
tc2 = unittest.TestLoader().loadTestsFromTestCase(LoginTest)

smokeTest = unittest.TestSuite([tc1])

unittest.TextTestRunner(verbosity=2).run(smokeTest)

问题是,它执行所有的测试用例,即使我只放了一个。看起来它收集了我有参数 (unittest.TestCase) 并且没有选择正确的 TestSuite 的所有类。

不管我是smokeTest = unittest.TestSuite([tc1]) 还是smokeTest = unittest.TestSuite([tc2, tc1]),它仍然会运行所有的TestCases。

【问题讨论】:

  • 你为什么要这样做?使用 py.test 和 nose 等工具的全部意义在于让 它们 收集和运行测试。您应该根本不需要定义TestSuite。如果您只想运行LoginTest,您可以在命令行中指定,或者使用提供的装饰器跳过其他测试。
  • 嗯,我有一堆像smoke、function、regression这样的testsuites,它们都有自己的测试用例集。
  • 所以?如果要运行冒烟测试,请使用pytest tests/test_smoke.py,如果是目录,请使用pytest tests/smoke_tests。如果您在文件/目录中正确分组测试,则无需执行任何操作来收集要运行的测试,只需指定目录/文件。

标签: python pytest


【解决方案1】:

这是我的未回答。检查pytest documentation 并找到类似(强调添加)的段落,

请注意,这是一种运行测试代码的临时方式 直到您完全转换为 pytest 样式的测试。充分利用 您应该转换的固定装置、参数化和钩子(工具如 unittest2pytest 很有帮助)。此外,并非所有 3rd 方插件都是 预计最适合 unittest.TestCase 样式测试。

您是否有合理的期望,您应该能够在 unittest 样式的测试运行程序上调用 pytest?

查看pytest's own test for unittest compatibility 和他们的unittest.py module 本身,我看不到对单元测试样式的TestSuites 的支持或验证,您的test_suite.py 依赖于它,它构成了这个问题的基础。我只看到对他们支持的文档的支持,unittest.TestCase。

pytest 做了错误的事情

so zyoung$ pytest tests/test_suit.py 
============================= test session starts ==============================
platform darwin -- Python 2.7.13, pytest-3.0.6, py-1.4.32, pluggy-0.4.0
rootdir: /Users/zyoung/so, inifile: 
collected 2 items 

tests/test_suit.py ..

=========================== 2 passed in 0.02 seconds ===========================

python/unittest 做了正确的事情

so zyoung$ python tests/test_suit.py 
test (cloud.cloud_test.CloudTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多