首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用pytest控制运行哪些测试

使用pytest控制运行哪些测试
EN

Stack Overflow用户
提问于 2017-01-25 21:58:05
回答 5查看 1.5K关注 0票数 3

我正在考虑将一些unittest.TestCase测试转换为Pytest测试,以利用Pytest的fixture。然而,unittest的一个特性是创建测试套件并运行它们的能力,这是我在Pytest中很难找到的等价物。我现在经常做这样的事情:

代码语言:javascript
复制
import unittest

class TestSomething(unittest.TestCase):
    def test_1(self):
        self.assertEqual("hello".upper(), "HELLO")

    def test_2(self):
        self.assertEqual(1+1, 2)

if __name__ == "__main__":
    suite = unittest.TestSuite()
    # suite.addTest(TestSomething('test_1'))
    suite.addTest(TestSomething('test_2'))
    runner = unittest.TextTestRunner()
    runner.run(suite)

通过使用addTest对各行进行注释,我可以轻松地选择要运行的测试。我该如何用Pytest做类似的事情呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-25 22:15:35

您可以使用-k参数来运行特定的测试。例如

代码语言:javascript
复制
# put this in test.py
import unittest

class TestSomething(unittest.TestCase):
    def test_1(self):
        self.assertEqual("hello".upper(), "HELLO")

    def test_2(self):
        self.assertEqual(1+1, 2)

可以像这样运行TestSomething类中的所有测试:

代码语言:javascript
复制
py.test test.py -k TestSomething

仅运行test_2

代码语言:javascript
复制
py.test test.py -k "TestSomething and test_2"

documentation中的更多示例

票数 3
EN

Stack Overflow用户

发布于 2017-01-25 22:38:49

另一种方法是使用特殊的测试名称。这些可以在pytest.ini文件中进行配置。

代码语言:javascript
复制
# content of pytest.ini
# can also be defined in tox.ini or setup.cfg file, although the section
# name in setup.cfg files should be "tool:pytest"
[pytest]
python_files=check_*.py
python_classes=Check
python_functions=*_check

另一种方法是在conftest.py中执行操作。在本例中,使用了collect_ignore配置变量。它是要忽略的测试路径的列表。在本例中,收集时总是忽略test_somthing.py。如果我们使用Python3进行测试,则忽略test_other_module_py2.py。

代码语言:javascript
复制
# content of conftest.py
import sys

collect_ignore = ["test_something/test_something.py"]
if sys.version_info[0] > 2:
    collect_ignore.append("test_other/test_other_module_py2.py")

从pytest 2.6开始,也可以从测试注册中省略类,如下所示:

代码语言:javascript
复制
# Will not be discovered as a test
class TestClass:
    __test__ = False

这些示例松散地取自pytest章节Changing standard (Python) test discovery的文档

票数 2
EN

Stack Overflow用户

发布于 2017-01-25 22:17:28

除了使用-k筛选器之外,您还可以命名要运行的特定测试类或用例。

代码语言:javascript
复制
py.test test.py::TestSomething::test_2

将只运行test_2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41853509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档