长沙电商网站制作,响应式个人网站psd,ios注册开发者账号,哪里可以自己免费开网店在pytest中#xff0c;setup_class是一个特殊的方法#xff0c;它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。
当你在setup_class中使用self来修改类属性时#xff0c;你实际上是在修改类的一个实例属性。在Pyth…在pytest中setup_class是一个特殊的方法它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。
当你在setup_class中使用self来修改类属性时你实际上是在修改类的一个实例属性。在Python中类属性和实例属性是有所区别的
类属性是绑定到类本身的属性通常可以通过类名直接访问例如MyClass.my_class_attr。实例属性是绑定到类的一个具体实例的属性需要通过类的实例来访问例如my_instance.my_instance_attr。
当你在setup_class中使用self来设置属性时你实际上是在设置实例属性。因为setup_class方法是一个实例方法尽管它是在类级别上运行的所以self引用的是类的一个临时实例。这意味着任何通过这个self设置的属性都将成为这个实例的属性而不是类的属性。
然而由于setup_class在类级别的测试开始之前只运行一次并且所有的测试方法都共享这个临时实例所以任何在setup_class中设置的实例属性都将在所有的测试方法中可用并且它们都会看到相同的值。
如果你想要在类级别上设置属性即希望所有实例共享相同的属性你应该直接在类上设置属性而不是在setup_class中使用self。例如
class MyTestClass:my_class_attr Noneclassmethoddef setup_class(cls):cls.my_class_attr some valuedef test_method1(self):assert self.my_class_attr some valuedef test_method2(self):assert self.my_class_attr some value在这个例子中my_class_attr是一个类属性我们在setup_class中直接修改它。因此所有测试方法都能够访问到这个修改后的值。
总结要想在pytest的类各个方法中共享变量要么在setup里用self.属性设置变量要么用cls.属性设置变量。 在其他方法中设置的变量是不能共享的。 如下图最后assert时self.order_id是None 或者也可以用这种方法