如何确定当前测试是否是最后一次运行?

时间:2015-12-15 08:35:56

标签: python python-2.7 python-unittest nosetests

如何从当前测试中找出最后一次测试? (Python unittest / nosetests)

我有一些特定的夹具拆解要在测试运行的最后完成,如果在测试基础上测试我可以更容易确定:

if last_test:
   hard_fixture_teardown()
else:
   soft_fixture_teardown()

我有一个拆解包可以很好地工作但是看起来非常混乱将夹具信息传回__init__.teardown_package()

2 个答案:

答案 0 :(得分:1)

您可以使用TestCase.tearDown()TestCase.tearDownClass()的组合来实现此目的。为每个测试方法调用tearDown(),而在类中的所有测试运行后调用tearDownClass()

答案 1 :(得分:0)

如上所述here单元测试并不意味着有一个订单,单元测试取决于订单要么没有很好地构思,要么只需要在单片测试中合并。 (在单个测试中合并单独的函数是可接受的答案)

[评论后编辑]

如果订单不重要,你可以这样做(非常混乱,我们仍然强迫应该如何使用单元测试的界限)

在您放入的每个测试包中:

def tearDownModule():
    xxx = int(os.getenv('XXX', '0')) + 1
    if xxx == NUMBER_OF_TEST_PACKAGES:
        print "hard tear down"
    else:
        print "not yet"
        os.environ['XXX'] = str(xxx)

从全球某处导入NUMBER_OF_TEST_PACKAGES。

如果顺序不重要,我想当使用时,夹具只被重新加入而不被修改,如果是这样你可以设置为一个类方法

@classmethod
def setUpClass(cls):
    print "I'll take a lot of time here"