pytest如何在类的方法之间共享变量?
创作时间:
作者:
@小白创作中心
pytest如何在类的方法之间共享变量?
引用
CSDN
1.
https://blog.csdn.net/seanyang_/article/details/136285056
在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 = None
@classmethod
def setup_class(cls):
cls.my_class_attr = "some value"
def test_method1(self):
assert self.my_class_attr == "some value"
def test_method2(self):
assert self.my_class_attr == "some value"
在这个例子中,my_class_attr是一个类属性,我们在setup_class中直接修改它。因此,所有测试方法都能够访问到这个修改后的值。
总结:要想在pytest的类各个方法中共享变量,要么在setup里用self.属性设置变量,要么用cls.属性设置变量。在其他方法中设置的变量,是不能共享的。
如下图,最后assert时,self.order_id是None
或者也可以用这种方法
热门推荐
离婚案件中过错方行为认定
意大利文化艺术商务考察:历史、艺术与创意的深邃之旅
一梦江湖自创武学制作攻略
史诗对决:德甲经典之战——拜仁慕尼黑 vs 多特蒙德,全场回顾与深度分析
补发工资应怎样计算个税
热量摄入需求的计算公式是什么
家里炒菜必看!哪种油才是最合适的?你绝对想不到!
食欲不振、打嗝、恶心,可能胃溃疡在作怪,做好6个预防
Excel山积图制作教程:从入门到精通
螺纹铣刀的选用
揭秘二次函数的奥秘:从表达式到应用
芦哲:消费税调整对行业的影响 ——消费税改革探索(下)
孩子吵架怎么办?教你陪孩子从冲突中成长!
智齿拔除后疼痛的高峰期详解|术后护理全面指南
孩子在学校受到侮辱怎么办
嘴角长白头粉刺是什么原因
“天书”《易经》的精髓!全藏在这 3 个字中
如何通过冥想来提升自我意识和减压
心理学揭秘:如何克服完美主义,接受不完美的自己
世界第一高的木塔是如何设计的?
2025年电脑显卡选购指南:性能与价值的最佳平衡
从《哪吒2》申公豹看企业管理:一个被埋没的总经理人选
马来西亚莫纳什大学本科专业详解
Windows 10防火墙设置:如何允许特定应用程序访问?
接近2万亿元!A股融资余额创9年新高
地球70%被水覆盖,那么地球上最初的水是从哪里来的,看完才知道
这条"慢生活"线路 偷得浮生半日闲
如何用温暖的言语抚慰心灵:安慰技巧指南
5部豆瓣高分印度电影,不得不说阿三有点水平
第四套人民币100元防伪特征有哪些?