gpt4 book ai didi

python - 使用 Nose 获取设置中当前测试的名称

转载 作者:太空狗 更新时间:2023-10-29 22:22:57 24 4
gpt4 key购买 nike

我目前正在使用 nose 编写一些功能测试。我正在测试的库操作一个目录结构。

为了获得可重现的结果,我存储了一个测试目录结构的模板,并在执行测试之前创建了该模板的副本(我在测试 setup 函数中执行此操作)。这确保我在测试开始时始终具有明确定义的状态。

现在我还有两个要求:

  1. 如果测试失败,我希望它操作的目录结构被覆盖或删除,以便我分析问题。
  2. 我希望能够并行运行多个测试。

这两个要求都可以通过为每个执行的测试创建一个具有不同名称的新副本来解决。出于这个原因,我想访问当前在 setup 函数中执行的测试的名称,以便我可以适本地命名副本。有什么办法可以实现吗?

说明性代码示例:

def setup_func(test_name):
print "Setup of " + test_name

def teardown_func(test_name):
print "Teardown of " + test_name

@with_setup(setup_func, teardown_func)
def test_one():
pass

@with_setup(setup_func, teardown_func)
def test_two():
pass

预期输出:

Setup of test_one
Teardown of test_one
Setup of test_two
Teardown of test_two

将名称作为参数注入(inject)将是最好的解决方案,但我也愿意接受其他建议。

最佳答案

听起来像 self._testMethodNameself.id()应该为你工作。这些是 unittest.TestCase 类的属性和方法。例如:

from django.test import TestCase


class MyTestCase(TestCase):
def setUp(self):
print self._testMethodName
print self.id()

def test_one(self):
self.assertIsNone(1)

def test_two(self):
self.assertIsNone(2)

打印:

...
AssertionError: 1 is not None
-------------------- >> begin captured stdout << ---------------------
test_one
path.MyTestCase.test_one

--------------------- >> end captured stdout << ----------------------
...
AssertionError: 2 is not None
-------------------- >> begin captured stdout << ---------------------
test_two
path.MyTestCase.test_two

--------------------- >> end captured stdout << ----------------------

另见:

希望对您有所帮助。

关于python - 使用 Nose 获取设置中当前测试的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com