gpt4 book ai didi

python - 是否可以从 nose 插件访问类级属性?

转载 作者:行者123 更新时间:2023-11-28 20:44:27 25 4
gpt4 key购买 nike

假设我有以下测试类:

# file tests.py
class MyTests(object):
nose_use_this = True

def test_something(self):
assert 1

我可以轻松编写一个在该测试之前运行的插件:

class HelloWorld(Plugin):
# snip
def startTest(self, test):
import ipdb; ipdb.set_trace()

测试是我想要的,但是test的类型是nose.case.Test:

ipdb> str(test)
'tests.MyTests.test_something'
ipdb> type(test)
<class 'nose.case.Test'>

而且我看不到任何可以让我获取我在 TestCase-ish 类中定义的 nose_use_this 属性的内容。

最佳答案

编辑:

我认为最好的方法可能是使用 startContext 访问上下文/stopContext 方法对,并在那里设置实例的属性:

class MyPlugin(Plugin):
def __init__(self, *args, **kwargs):
super(MyPlugin, self).__init__(self, *args, **kwargs)
self.using_this = None

def startContext(self, context):
if hasattr(context, 'nose_use_this'):
self.using_this = context.nose_use_this

def stopContext(self, context):
self.using_this = None

def startTest(self, test):
if self.using_this is not None:
do_something()

为了真正健壮,你可能需要实现一堆东西,因为(至少)模块和类调用了“startContext”,但是如果唯一可以设置属性的地方是在类上,那么我认为这个简单的事情应该有效。它似乎对我有用。 ( Nose 1.3.0 和插件 api 版本 0.10)


原创:

哦,是 test 实例上的 _context() 函数:

ipdb> test._context()
<class 'tests.MyTests'>

而且它确实具有预期的类级属性。我仍然对更好的方法持开放态度,_ 让我觉得 nose 不希望我将其视为 API 的一部分。

关于python - 是否可以从 nose 插件访问类级属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18988943/

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