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
或者也可以用这种方法
热门推荐
进来算算你孩子一天摄入多少咖啡因,没喝咖啡也要算
如何选择最有效的提升免疫力保健食品?
人参“变身”记
2024年度川渝地区十大考古发现发布
冬季瑜伽垫清洁小窍门
秋冬瑜伽新宠:天然橡胶瑜伽垫推荐
瑜伽垫颜色的秘密:如何选择适合自己的瑜伽垫?
鲍鱼、鱼翅、燕窝、海参,真的大补吗?看过这篇,帮你省钱
小可教你儿童面部彩绘入门技巧
60岁母亲的健康管理指南:从营养到生活方式的全面建议
60岁妈妈如何预防“三高”?这份实用指南请收好
探秘泸州:原始森林与千年酒香的双重魅力
泸州会津古城垣:千年筑城史的见证者
五一必打卡!泸州这些景点超赞🔥
泸州博物馆12月新展来袭!
“老头乐”高速逆行致2人死亡,乱窜的“老头乐”安全从何而来?
元阳梯田11月观赏全攻略:天空之镜的绝美时刻
冬游元阳梯田:1-2月最佳观赏期全攻略
手机被偷报警处理流程怎么走
手机丢失应对措施与紧急处理建议
解密"bin":从沙特王储名字看阿拉伯语命名习惯
阿育吠陀:瑜伽练习者的最佳营养指南
爱丁堡大学研究:瑜伽让老年人更灵活
来成都第一天哪里好玩?你想要的全在这里!
如何提升职场竞争力:个人能力与职业技能的发展
苹果手机如何限制App后台运行
2025春节档票房破36亿:电影市场回暖背后的经济信号
2025春节档电影:历史元素与文化传承的视听盛宴
《哪吒》《唐探》双雄争霸:春节档电影里的当代价值观
石林迎来持续晴天!这份游玩攻略请收好