其实呢allure还有博主认为特别好的功能,就是在各个用例下面添加各种附件,这里不止可以加图片附件像什么文件附件也是可以的,但在日常工作中呢我们一般都会加上测试结果图片附件。今天博主就详细的讲一下从截取测试结果图片,到如何处理图片再到讲图片添加到allure测试报告附件中的流程。
首先呢我们在公共类下面先写一个截取图片的方法,这里我们用的是get_screenshot_as_file方法。后面在代码中我们直接实例化这个方法直接用就可以了。
class Page(object):
'''自动截图功能'''
def screenshot(self,filename): #filename为图片的名字
catlog = '图片截取后保存的目录'
now = time.strftime("%Y-%m-%d %H_%M_%S") '获取当前时间'
self.driver.get_screenshot_as_file(
catlog + filename + now + '.png'
)
后面我们在用例的操作步骤模块在想截取图片位置的地方直接实例化该方法。博主其实偷了一个懒没有写例子,下面的代码也只是截取博主实际工作的写的一小段而已,大家可能会看的没头没尾的,但这都不重要,hahhah,主要是想让大家看一下截图方法放置的位置。大家直接翻到最下面看就行啦。
class Audio(Page): 继承刚刚写的截取图片的类
'''有声书'''
shouye_loc = (By.XPATH,'//*[@text = "首页"]')
audiobook_loc = (By.ID,'com.ppm.phoenix.book.pub:id/btn_audio_book')
listaudiobook_loc = (By.CLASS_NAME,'android.widget.TextView')
listpage1_loc = (By.ID,'com.ppm.phoenix.book.pub:id/btn_open_book')
bookname_loc = (By.CLASS_NAME,'android.widget.TextView')
backoff_loc = (By.CLASS_NAME,'android.widget.ImageView')
backoff1_loc = (By.CLASS_NAME,'android.widget.ImageView')
def arue(self):
i = random.randint(1, 3)
return i
'''有声书,好书解读'''
def type_medium(self,column,lisetgoodbook,button,bookname,return1,return2):
for b in range(10):
name = self.find_element(*column)
medianame = name.text
name.click()
c = self.arue()
self.find_elements(*lisetgoodbook)[c].click()
self.down() # 页面向下滑动
pa = ['播放', '试听']
textname = self.find_elements(*button)[c]
textname1 = textname.text
for a in range(5):
pa = ['播放', '试听']
click1 = self.find_elements(*button)[c]
textname = click1.text
print('内层代码循环{}次获取到的按钮为,{}'.format(a, textname))
if textname1 not in pa:
print('外层总循环次数{}'.format(b))
print('没有取到可以播放正常播放的介质')
if a == 4:
self.find_elements(*return2)[1].click()
if medianame == '好书解读':
self.find_elements(*return2)[0].click()
elif textname1 in pa:
sleep(3)
click1.click()
sleep(5)
'''看这里看这里'''
self.screenshot('好书有声书or解读') #截取功能,中间加上图片的名字
bookname = self.find_element(*bookname).text
print('资源名称为:{},外循环次数{},内循环次数{}'.format(bookname,b,a))
# self.find_element(*return1).click()
# self.find_elements(*return2)[1].click()
break
if textname1 in pa:
print('-----成功获取到资源')
break
好的,图片也截取到了存放到对应的目录中了,下面我们要取到这个图片的路径,给最后一步添加附件用。
import glob
class Pic():
def picturereading(self,bookname): #bookneme输入图片名字方便在图片目录中找到对应的图片
catlog = '图片存放的路径'
image = glob.glob(catlog + '*.png')
return image
执行一下,看取到的图片目录是在列表中的,所以啊在调用的时候需要解包,
好了现在在测试结果文件中加入allure添加附件的方法。
allure.attach.file(*Pic().picturereading('图片的名字,注意要与实际图片名字相同'),'附件名称',attachment_type=allure.attachment_type.PNG)
#*Pic().picturereading()实例化刚刚定义的获取图片路劲的方法,这里的*就是解包列表了,
#allure.attach.file()后面跟着的第二个参数就是附件的名称
#attachment_type=allure.attachment_type.PNG 显而易见就是图片的后缀啦
看一下最后的效果。