我正在使用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测试发现规则的情况下,我是否可以标记一种确切的方法而不是测试方法?
答案 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
阅读更多内容