所以,我知道gtest有“字面上”的固定装置,但构造函数/析构函数和setup /拆解函数将在每次测试后执行 而不是在整个测试集之后执行夹具
我可以想到解决这个问题的方法,但是有一些我没有找到的内置支持吗?
答案 0 :(得分:5)
您可以在测试夹具类中定义静态方法SetUpTestCase
和TearDownTestCase
:
struct MyTest: ::testing::Test {
static void SetUpTestCase() {
}
static void TearDownTestCase() {
}
};
有关这方面的更多信息,请参见Googletest wiki。
注意这些静态方法名称的拼写。
答案 1 :(得分:0)
Google测试支持在测试(测试方法)级别,套件(类)级别以及程序级别上进行设置和拆卸。后面是您要寻找的那个:
https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#global-set-up-and-tear-down介绍了如何派生和注册自己的实现安装和拆卸方法的 environment-fixture 类,这些方法在测试运行程序执行期间仅被调用一次
简而言之,您可以执行以下操作:
class ProductForm(forms.ModelForm):
class Meta:
model = Product
exclude = ()
def __init__(self, *args, **kwargs):
super(ProductForm, self).__init__(*args, **kwargs)
instance = kwargs['instance']
self.fields['condition'].widget.attrs['id'] = instance.id