运行 一个 python 单元测试只有当另一个通过时

Run a python unittest only if another one passes

我是单元测试的新手,我正在编写 class 来模拟针孔相机的行为。

我在 Python 中使用 unittest 模块进行了多个单元测试,我的相机 class 有一个 lookAt 方法,它可以使它注视某个点,即旋转相机框架,这样它指向目标。 我还有一种方法可以将 3D 点投影到相机的图片中。

我这里的场景是,我首先测试 lookAt 方法,然后如果测试通过,我使用 lookAt 方法让我的相机看一个立方体,然后将该立方体投影到我相机的图片上(投影是要在这里测试的东西)。

unittest 模块中是否有可能让我 运行 在另一个测试中进行测试?或者我应该手工制作一个 lookAt 矩阵,然后单独测试投影(我认为这是这里的最佳做法)?

查看 skipIf decorator 并根据第一个测试中设置的条件将其应用于相关测试。

@unittest.skipIf(condition, reason)

例如(来自上面link):

    @unittest.skipIf(mylib.__version__ < (1, 3),
                 "not supported in this library version")

还有 subTest(),但文档将 subTest 的目的描述为 "When some of your tests differ only by a some [sic] very small differences."