【发布时间】: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。如果您在文件/目录中正确分组测试,则无需执行任何操作来收集要运行的测试,只需指定目录/文件。