我在运行测试套件时遇到问题。 我正在使用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)
问题是,它执行所有TestCase,即使我只放了一个。看起来它收集了我有参数(unittest.TestCase)
并且没有选择正确的TestSuite的所有类。
如果我执行smokeTest = unittest.TestSuite([tc1])
或smokeTest = unittest.TestSuite([tc2, tc1])
无关紧要,它仍会运行所有TestCases。
答案 0 :(得分:0)
这是我的答案。检查pytest documentation并找到类似(强调添加)的段落,
请注意,这是运行测试代码的临时方式 直到您完全转换到pytest样式的测试。要充分利用 你应该转换的灯具,参数化和钩子(像 unittest2pytest很有帮助)。此外,并非所有第三方插入都是 预计最适合unittest.TestCase样式测试。
你是否有理由期望你能够在单位测试风格的测试跑步者上调用pytest?
查看pytest's own test for unittest compatibility及其unittest.py module本身,我看不到您的test_suite.py所依赖的单元测试式TestSuite的支持或验证,这构成了此问题的基础。我只看到他们支持的文件支持,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