你这么非凡,必定只想把“柠檬班”置顶
▲
绪论众人好,我是柠檬班Python6期的学生小翟。
畴昔罕用unittest做接口主动化测试,后来想获得单个接口的响当令间,便采纳pytest单位测试框架。
即使取得的时候不太精确。
由于pytest测试汇报的时候是从一个用例发端到收场,个中包含了断言,因而现实时候比响当令间略长。
倘使从参考的角度看,这个时候即使不是很精确,但仍有价格。
Pytest与ddt辩论倘使你想应用pytest,就不能应用ddt做数据启动了,不然运转时会抛出反常。
提醒
data不是pytest的一个fixture这时能够应用pytest的参数化,即底下这类体例:
个别来讲,应用至多的是前两个参数,argnames和argvalues。
argnames:用逗号分开的字符串,示意一个或多个参数名或参数列表/元组。
argvalues:是一个列表,让前方的参数argnames挨次从中取值用于迭代
云云的话,咱们就处理了第一个题目。
即用pytest参数化来接替unittest的数据启动。
测试汇报中的用例名字不范例迫在眉睫的点了运转,俄然发觉测试汇报中的用例名字很不幸,这是甚么鬼,为甚么会云云写?
云云的测试用例名字,第一眼让人感触很参差,由于根柢看不出是哪条接口的。
倘使能将测试用例中的case_id对应的值做为用例名字就对比完备了:
那时我的第一思绪是,先去看看测试汇报的元素。
这个用例名字的元素对应的标签的td。
对应的class属性值是"col-name"。
那能不能去pytest-html的源码中看看在哪一伙。
在其余场合没有找到,但在plugin.py中找到了,能够看到找到了一个,没错便是咱们想要的td标签。
那末尚有一个参数self.test_id是甚么?
斗胆的揣测一下,该当是td标签对应的文本值吧。
既然要改动td标签的文本值,此刻曾经揣测是self.test_id对应的值。
接下只要探求一下self.test_id是何如界说的,全部便瓜熟蒂落!
图1:
图:
图:
不过果真这么简略吗?
请看上图,全豹找到了4个self.test_id。
除了刚才咱们找的谁人,有个和report.nodeid相关。
有1个和extra_index和test_index相关,report.nodeid大概是report的一个属性。
此背面两个参数是crate_asset的两个形参,这些东西咱们能直接获得到吗?
看到这边,感触第一个思绪错了,起码是方位有题目!
想想畴昔,在做unittest的时候,ddt经过批改源码改动用例名字。
ddt批改时并不是去HTMLTestRunner中批改的。
同理,咱们猜度下,pytest要批改用例名字,