我在运行测试套件时遇到问题。 我将 pytest 用于固定装置和测试排序,以及用于运行套件的单元测试。所有测试类都有参数(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])
,它仍然运行所有测试用例。
最佳答案
这是我的非答案。检查了pytest documentation并找到类似(添加了重点)的段落,
Note that this is meant as a provisional way of running your test code until you fully convert to pytest-style tests. To fully take advantage of fixtures, parametrization and hooks you should convert (tools like unittest2pytest are helpful). Also, not all 3rd party pluging are expected to work best with unittest.TestCase style tests.
您是否合理期望您应该能够在单元测试样式的测试运行器上调用 pytest?
查看pytest's own test for unittest compatibility , 以及他们的 unittest.py module本身,我看不到单元测试风格的测试套件的支持或验证,你的 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
关于Python pytest unittest.TextTestRunner 不运行特定套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234836/