如何标记一个函数而不是pytest的测试?

时间:2018-05-30 17:35:57

标签: python unit-testing tensorflow pytest

我正在使用pytest来测试一些基于TensorFlow的代码。

TestCase的定义是为了简单起见,如:

class TestCase(tf.test.TestCase):
    # ...

问题是tf.test.TestCase提供了一个有用的函数self.test_session(),它在pytest中被视为测试方法,因为它的名称以test_开头。

结果pytest报告比我test_session()方法定义的测试方法更成功测试。

我使用以下代码跳过test_session

class TestCase(tf.test.TestCase):
    @pytest.mark.skip
    @contextmanager
    def test_session(self):
        with super().test_session() as sess:
            yield sess

然而,测试报告中会有一些“s”表示有一些跳过测试。

在没有全局更改pytest测试发现规则的情况下,我是否可以标记一种确切的方法而不是测试方法?

2 个答案:

答案 0 :(得分:2)

在收集测试项后过滤掉误报:使用自定义后期收集钩在test目录中创建conftest.py

# conftest.py
def pytest_collection_modifyitems(session, config, items):
    items[:] = [item for item in items if item.name != 'test_session']

pytest仍然会收集test_session方法(您会在pytest报告行collected n tests中注意到),但不会将它们作为测试执行,并且不会在任何地方考虑它们在试运行中。

答案 1 :(得分:-1)

在unittest中有办法吗

@unittest.skip("skipping reason")

tf.test有skipTest(reason)在https://www.tensorflow.org/api_docs/python/tf/test/TestCase#skipTest

阅读更多内容